首先打开58主页面,点击二手房可以看到该网页有大量后缀,类似https://wh.58.com/ershoufang/?PGTID=0d100000-0009-e946-8366-2e5413b67852&ClickID=2直接将后面删除使用https://wh.58.com/ershoufang/再访问,仍然不影响得到网页上的数据。
然后打开检查,通过左上角我们可以得到选择元素可以看到我们想要爬取的放在信息在class="house-list-wrap"属性下,而每一条信息则是在li标签中。如图:
确定了标签后我们再过滤我们在标签中想要获取的信息,进一步对标签展开我们可以看到我们想要获取的简要信息在每个li标签中第二个div标签里的h2中的a标签中包含文本信息。
然后过滤好了信息,我们要爬取的数据就确定了。代码如下:
import requests
from lxml import etree
if __name__=="__main__":
#爬取页面源码数据
url = 'https://wh.58.com/ershoufang/'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'
}
page_text=requests.get(url=url,headers=headers).text
#数据解析
tree= etree.HTML(page_text)
li_list=tree.xpath('//ul[@class="house-list-wrap"]/li')
fp =open('58.txt','w',encoding='utf-8')
for li in li_list:
title=li.xpath('./div[2]/h2/a/text()')[0] #加.局部定位,./表示xpath左边的li,/表示源码根标签
print(title)
fp.write(title+'\n')