《Python筆記》Requests爬蟲(3)爬取趕集網數據

之前兩篇request文章,爬取的是文章固定標籤id,唯一值

這裏我通過爬取趕集網上的找房,爬了一點數據,主體上和爬小說是差不多的。

具體的代碼如下:

py代碼如下

# coding:utf-8
import requests
from lxml import etree
import pymysql

# 獲取網頁源代碼
url = 'http://sh.ganji.com/zufang/'
req = requests.get(url)
selector = etree.HTML(req.content)
# link鏈接
link = selector.xpath('//*[@class="f-list-item ershoufang-list"]/dl/dd/a/@href')
# 標題
title = selector.xpath('//*[@class="f-list-item ershoufang-list"]/dl/dd/a/text()')
# 價格
price = selector.xpath('//*[@class="price"]/span[1]/text()')
# 戶型
type = selector.xpath('//*[@class="f-list-item ershoufang-list"]/dl/dd[@class="dd-item size"]/span[1]/text()')
# 面積
size = selector.xpath('//*[@class="f-list-item ershoufang-list"]/dl/dd[@class="dd-item size"]/span[3]/text()')
# 朝向
orientation = selector.xpath('//*[@class="f-list-item ershoufang-list"]/dl/dd[@class="dd-item size"]/span[5]/text()')
# 地點(地點被拆分了,所以需要在入庫前拼接,代碼在for循環中)
place1 = selector.xpath('//*[@class="f-list-item ershoufang-list"]/dl/dd[@class="dd-item address"]/span/a[1]/text()')
place2 = selector.xpath('//*[@class="f-list-item ershoufang-list"]/dl/dd[@class="dd-item address"]/span/a[2]/span/text()')

# 連接數據庫
db = pymysql.connect("127.0.0.1", "root", "123456", "mypython")
cursor = db.cursor()
print(" ---- 數據庫連接成功 ---- ")
for i in range(len(title)):
    # 地點拼接
    place1[i] = place1[i].strip()
    place2[i] = place2[i].strip()
    place = place1[i] + "-" + place2[i]
    # 判斷數據是否存在
    querySql = "SElECT * from house where link ='%s' " % (link[i])
    cursor.execute(querySql)
    data = cursor.fetchone()
    # 不存在就新增
    if data:
        print(" ---- 數據已存在 ---- ")
    else:
        # 數據不存在就新增入庫
        insertSql = "INSERT INTO house(link, title, price, type, size, orientation, place) VALUES('%s', '%s','%s','%s', '%s' , '%s', '%s') " % (link[i], title[i], price[i], type[i], size[i], orientation[i], place)
        try:
            cursor.execute(insertSql)
            db.commit()  # 提交到數據庫執行
            print(" ---- 新增成功 ---- ")
        except Exception as e:
            db.rollback()  # 異常回滾
            print(e)
# 關閉數據庫
cursor.close()

 數據庫結構

// 創建數據庫
create database mypython;
// 使用指定數據庫
use mypython;
// 創建數據表
CREATE TABLE `house` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵',
  `link` longtext COMMENT '出租房鏈接',
  `title` longtext COMMENT '標題',
  `price` decimal(11,2) DEFAULT NULL COMMENT '價格',
  `type` varchar(255) DEFAULT NULL COMMENT '戶型',
  `size` varchar(255) DEFAULT NULL COMMENT '房屋面積',
  `orientation` varchar(255) DEFAULT NULL COMMENT '朝向',
  `condition` varchar(255) DEFAULT NULL COMMENT '裝修程度',
  `place` varchar(255) DEFAULT NULL COMMENT '房子位置',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章