我就只爬取了一页,url规律还是很好找的 http://cq.ganji.com/zufang/pn1/ 数字pn的变化
import requests
import re
from lxml import html
import time
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
def title(resp): #这里是获得标题的名字 因为数据采取后 会多一个 ‘’ 所以下面有个删除操作 删除第一个元素
pat='.*?<img title="(.*?)" alt=".*?" class="translation js-lazy-load js-img" '
titles=re.compile(pat,re.S).findall(resp)
del titles[0]
return titles
def door_model(resp): #这是获得户型 就多写了 正则和xpath
#pat='<dd class="dd-item size">.*?<span>(.*?)</span>'
#door_models=re.compile(pat,re.S).findall(resp)
txt=html.etree.HTML(resp)
door_models=txt.xpath('//dd[@class="dd-item size"]/span[1]/text()')
return door_models
def price(resp): #这里是获得价格
txt = html.etree.HTML(resp) #只是转为html格式,因为xpath只能识别html格式(这个是我自己方便这么叫的格式,其实我也不知道这个是什么格式)
prices = txt.xpath('//dd[@class="dd-item info"]/div/span[1]/text()')
return prices
def main():
url='http://cq.ganji.com/zufang/pn1/'
resp=requests.get(url,headers=headers).text
doormodels = door_model(resp)
#print(doormodels)
prices =price(resp)
#print(prices)
titles=title(resp)
for i in range(0,len(titles)): #这里其实也可以把下面也封装为一个函数
t=titles[i]
d=doormodels[i]
p=prices[i]
data={'标题':t,'户型':d,'房价(月/元)':p}
print(data)
if __name__=='__main__':
main()