@Author:Runsen
@Date:2020/6/19
人生最重要的不是所站的位置,而是內心所朝的方向。只要我在每篇博文中寫得自己體會,修煉身心;在每天的不斷重複學習中,耐住寂寞,練就真功,不畏艱難,奮勇前行,不忘初心,砥礪前行,人生定會有所收穫,不留遺憾 (作者:Runsen )
作者介紹:Runsen目前大三下學期,專業化學工程與工藝,大學沉迷日語,Python, Java和一系列數據分析軟件。導致翹課嚴重,專業排名中下。.在大學60%的時間,都在CSDN。決定今天比昨天要更加努力。
前面文章,點擊下面鏈接
1、前言
在某日夏天的夜晚、突然有妹子加我微信,原來竟然叫我幫忙寫作業。
對於,我這個屌絲來說,還是花個半小時幫忙搞定下。爬取的網站又是鏈家網,你看我直接不是早已寫成博客了嗎?
我想對鏈家網說:鏈家網求你不要再害大家爬你的,真的讓廣大學生都是討厭你。
爬取的鏈接是:https://sz.lianjia.com/zufang/
什麼租房經紀人成交數據有嗎?我看老師都是傻傻的不知道亂搞一通。難爲是我啊?沒有的東西爬了毛?
2、明確爬取的信息
在鏈家網的租房信息中,有如下的信息,我都圈出來了。
明確爬取的信息,分別有整租,我就叫類型算了。新城花園就叫名稱, 面積就是101,朝向南,
3室1廳1衛就叫房間數,價格每個月1800,真貴。反正我這種窮人要不起。
3、 Requests訪問鏈接
Requests庫就是發請求的庫,需要加上請求頭,這樣就不用禁止了。
根據每個頁面的網址發現就是換了一個pg參數。比如,第一頁的網址是https://sz.lianjia.com/zufang/pg0
,
那麼第二頁就是https://sz.lianjia.com/zufang/pg1
,那麼就是傻瓜式構造。我們爬它個100頁,代碼如下。
for i in range(1, 101):
page_url = 'https://sz.lianjia.com/zufang/pg{}'.format(i)
res = requests.get(page_url, headers=headers)
4、 xpath解析內容
返回的頁面就需要解析,我經常用的說xpath,至於bs4趕緊忘記算了。
具體解析過程如下圖所示。
5、保存數據
我們選擇用csv來保存數據,通過with open('demo.csv', 'a+') as f
進行創建csv,然後通過f.write
進行寫入爬取的數據。
最終保存數據如下圖所示。
6、全部代碼
'''
@Author: Runsen
@微信公衆號: 潤森筆記
@博客: https://blog.csdn.net/weixin_44510615
@Date: 2020/6/27
'''
import requests
from lxml import etree
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}
with open('demo.csv', 'a+') as f:
f.write(
'類型' + ',' + '名稱' + ',' + '地點' + ',' + '面積' + ',' + '朝向' + ',' + '房間數' + ',' + '價格' + '\n')
for i in range(1, 101):
page_url = 'https://sz.lianjia.com/zufang/pg{}'.format(i)
res = requests.get(page_url, headers=headers)
# 這裏千萬不要判斷res的狀態碼200
page = etree.HTML(res.text)
content = page.xpath("//a[@class='content__list--item--aside']/@title")
where1 = page.xpath("//p[@class='content__list--item--des']/a[1]/text()")
where2 = page.xpath("//p[@class='content__list--item--des']/a[2]/text()")
where3 = page.xpath("//p[@class='content__list--item--des']/a[3]/text()")
squares = page.xpath("//p[@class='content__list--item--des']/text()[5]")
decorates = page.xpath("//p[@class='content__list--item--des']/text()[6]")
nums = page.xpath("//p[@class='content__list--item--des']/text()[7]")
Prices = page.xpath("//span[@class='content__list--item-price']/em/text()")
for j,w1,w2 , w3,s,d, n, Price in zip(content, where1, where2,where3, squares, decorates,nums,Prices):
type = j.replace("·", " ").split(" ")[0]
name = j.replace("·", " ").split(" ")[1]
location = w1+ w2 + w3
square = s.replace("\n", "").replace(" ", "")
decorate =d.replace(" ", "")
num = n.replace("\n", "").replace(" ", "")
price = Price+ "元/月"
print("正在寫入 :" + type + ',' + name + ',' + location + ',' + square + ',' + decorate + ',' + num + ',' + price + '\n')
f.write(type + ',' + name + ',' + location + ',' + square + ',' + decorate + ',' + num + ',' + price + '\n')
最後對不起,我不想寫一個word文檔,最近我連博客都沒有寫, 看化工一連串公式都快不行了,只求及格。最後還是寫一篇博客記錄下。