设计公司网站页面设计,长春网站优化策略,重庆建设汽车系统股份有限公司,wordpress 文章 分类第一#xff1a;给大家推荐一个爬虫的网课哈#xff0c;码起来 第二#xff1a;今夜主题#xff1a;通过xpath爬取58二手房的title信息#xff0c;也就是标红的位置~ 第三#xff1a;先分析一波title所在的位置
打开按下f12打开抓包工具#xff0c;即可看到网站的源码…第一给大家推荐一个爬虫的网课哈码起来 第二今夜主题通过xpath爬取58二手房的title信息也就是标红的位置~ 第三先分析一波title所在的位置
打开按下f12打开抓包工具即可看到网站的源码逐步定位至房子信息的部分 我们以第一个房子信息为例找到它的title位置最终发现它在h3这个位置~ 目前我们就需要在网页的源码上获取到section classlist下的h3里的文本信息
第四想要获取某个标签下的文本信息或是属性信息我们就要借助xpath啦当然在网课里老师讲了用正则表达式或bs4也可以但是由于时间有限我就直接学xpath啦 至于xpath是啥呢简而言之就是在网页的源码中定位至某一标签并且获取标签内容或是属性的解析工具
# 使用xpath首先需要安装lxml的包
from lxml import etree# 第二实例化etree对象
# 2.1 解析本地的html文件
page_etree etree.parse(本地html地址)
# 2.2 直接加载网页的源码
page_etree etree.HTML(page_text)
# 通过xpath表达式定位至某一标签当然获得是列表哈
list page_etree.xpath(xpath表达式)至于xpath表达式怎么码嘞记住以下几点~ 咱们以下面这个html-head标签下的title为例哈
# 通过/html/head/title可以逐步定位至htmlheadtitle/title/head/html的位置而/text()则可以获取title标签内的文本内容
list page_etree.xpath(/html/head/title/text())
print(list)# 但是如果这样逐步定位实在太麻烦了
# 比如说咱们现在需要定位的房子信息的title需要写好多级的section和div总不能一个个数叭
# 通过//就搞定啦//就可以直接跨越多个标签层级直接定位到符合条件的那一个标签啦
list page_etree.xpath(//title/text())
print(list)如果说有多个title例如下面这个情况但是我们只想获得特定的title的内容只需要加入class即可
htmlheadtitle classt1xxxxxxx/titletitle classt2xxxxxxx/titletitle classt3xxxxxxx/title/head
/html# 这样就可以获取title classt3xxxxxxx/title里的文本内容啦
list page_etree.xpath(//title[classt2]/text())那如果要获取某一标签内的属性例如说a href网站链接 /中的链接怎么办嘞以咱们房子信息中的这个a标签为例哈
# 这里可以注意两处用了//的地方
list page_etree.xpath(//section[classlist]//a/href)第五开码码完就睡
import requests
from lxml import etreeif __name__ __main__:headers {User-Agent: xxxxx,}url https://bj.58.com/ershoufang/# 发送get请求page_text requests.get(urlurl, headersheaders).text# 实例化对象page_etree etree.HTML(page_text)# 根据xpath表达式获取信息# 注意这里获取的是这个房子一整个信息的div标签其中包含左侧的房子图片title和详细信息及价钱list page_etree.xpath(//section[classlist]/div)f open(page/58_1.txt, w, encodingutf-8)for item in list:# 在这里将div标签中的title标签抽出来保存在txt文件里就完事啦# 因为xpath获取的结果是一个列表所以需要在后面加上索引[0]title item.xpath(./a/div[classproperty-content]/div/div/h3/text())[0]f.write(title \n)一开始我为了方便也采用了下面这个写法 # 在section标签下直接获取h3标签下的内容貌似也行~list page_etree.xpath(//section[classlist]//h3/text())f open(page/58.txt, w, encodingutf-8)for item in list:f.write(item \n)注意如果返回的结果为空回到58二手房的页面刷新一下点击按钮验证一下即可