爬虫实例 爬取58房源信息(xpath)
程序员文章站
2022-06-26 15:11:35
这篇爬虫代码是根据xpath来写的,所以我们要先知道xpath是什么什么是 XPath?XPath 使用路径表达式在 XML 文档中进行导航XPath 包含一个标准函数库XPath 是 XSLT 中的主要元素xpath表达式:需求:爬取58房源信息代码:import requestsfrom lxml import etree#需求 爬取58房源信息headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) Apple...
这篇爬虫代码是根据xpath来写的,所以我们要先知道xpath是什么
什么是 XPath?
XPath 使用路径表达式在 XML 文档中进行导航
XPath 包含一个标准函数库
XPath 是 XSLT 中的主要元素
xpath表达式:
需求:爬取58房源信息
代码:
import requests
from lxml import etree
#需求 爬取58房源信息
headers={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.75 Safari/537.36"
}
url="https://cq.58.com/ershoufang/e2j4/?PGTID=0d200001-0002-5482-edb8-331471d7e301&ClickID=1"
page_text=requests.get(url=url,headers=headers).text
#数据解析
tree=etree.HTML(page_text)
#储存的就是li标签对象
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]
print(title)
fp.write(title+'\n')
print("数据加载完成")
源码解析:
前面部分就不作解释了,每个爬虫其他部分都是一样的,最大的差别就在数据解析部分。
tree=etree.HTML(page_text)
#储存的就是li标签对象
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]
print(title)
fp.write(title+'\n')
Etree 支持从所有重要来源(即字符串、文件、 url (http / ftp)和类似文件的对象)以多种方式解析 XML。 主要的解析函数是 fromstring ()和 parse () ,它们都是以 source 作为第一个参数来调用的。 默认情况下,它们使用标准的解析器,但是您总是可以将不同的解析器作为第二个参数传递。
xpath表达式:
1、/:表示的是从根节点开始定位。表示的是一个层级
2、//表示的是多个层级。可以表示从任意位置开始定位
3、/text()获取的是标签中的直系内容
4、//text()获取的是标签中非直系文本内容(所有文本内容
li_list=tree.xpath('//ul[@class="house-list-wrap"]/li')
title=li.xpath('./div[2]/h2/a/text()')[0]
这里的div[2]指的就是li标签下的第二个div标签。
新手博主,请前辈批评指正——@丁一
本文地址:https://blog.csdn.net/weixin_46457946/article/details/110425816