欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

爬虫实例 爬取58房源信息(xpath)

程序员文章站 2022-03-28 16:25:39
这篇爬虫代码是根据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房源信息(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')

爬虫实例 爬取58房源信息(xpath)

title=li.xpath('./div[2]/h2/a/text()')[0]

爬虫实例 爬取58房源信息(xpath)
这里的div[2]指的就是li标签下的第二个div标签。

新手博主,请前辈批评指正——@丁一

本文地址:https://blog.csdn.net/weixin_46457946/article/details/110425816