request+xpath 爬虫案例demo

1. 一个最简单的 request+xpath获取内容

# +----------------------------------------------------------------------
# | User: zq
# | Version: python3.7
# | Time: 2020-03-09 09:33
# +----------------------------------------------------------------------

import requests
from scrapy import Selector

url = "http://www.whzk120.com/index.html"
my_headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}
res = requests.get(url, headers=my_headers)
#设置编码
res.encoding= "utf8"
html = res.text

sel = Selector(text=html)
# tag = sel.xpath("//*[@class='indexPart1']/ul/li[1]/a/h2/text()").extract()[0]
tag = sel.xpath("//*[@class='li_01']/a/h2/text()").extract()[0]
pass

 

<think>嗯,用户想找关于使用XPath进行网页爬虫案例或教程,还有示例代码。首先,我需要回忆一下XPath的基本知识,然后结合现有的引用资料来组织回答。根据用户提供的引用,有三个来源:Python的两种Java的一种。可能需要分别展示不同语言的示例,这样用户可以根据自己熟悉的语言选择。 首先,我应该介绍XPath的基本语法规则,确保用户理解路径表达式,比如节点选择、属性选择等。然后,针对每个引用中的案例,提取关键点。比如引用1提到用copy方法获取XPath表达式,但强调真正理解语法的重要性,以及XPath的局限性。引用2详细介绍了XPath的路径表达式,引用3则是一个Java版本的示例。 用户可能需要具体的代码示例,所以需要分别给出PythonJava的代码片段。Python方面,引用12都涉及,可以结合使用requestslxml库,展示如何解析HTML并提取数据。Java方面,引用3提到了使用较新的方法,可能需要用到Jsoup或者类似库,但用户示例中使用的是XPath,可能需要确认正确的库,比如使用JAXP或者其他支持XPath的库。 同时,要注意用户提到的XPath的局限性,比如无法处理JavaScript动态生成的内容,这时候需要提到其他技术如Selenium。此外,可能还需要比较不同语言中实现XPath爬虫的异同,帮助用户理解在不同环境下的应用。 在组织内容时,先介绍XPath的基本语法,然后分语言给出示例,最后讨论局限性优化方法。这样结构清晰,符合用户的问题需求。需要确保示例代码正确,并注释说明每一步的作用。同时,相关问题部分要围绕用户可能进一步想了解的内容展开,比如性能优化、动态内容处理、其他解析库比较等。</think>### XPath爬虫案例与教程 #### 一、XPath基础语法 XPath通过路径表达式定位XML/HTML文档中的节点,核心语法包括: 1. **节点选择**:`/`表示根节点,`//`表示任意层级,例如`//div`选择所有`div`标签 2. **属性匹配**:`@`符号选择属性,例如`//a/@href`提取所有链接 3. **谓语条件**:`[ ]`内添加筛选条件,例如`//div[@class="title"]`选择class为title的div[^2] #### 二、Python爬虫示例(电影数据抓取) ```python from lxml import etree import requests url = "https://example.com/movies" response = requests.get(url) html = etree.HTML(response.text) # 提取电影名称与下载链接 titles = html.xpath('//div[@class="title"]/text()') links = html.xpath('//a[contains(@href,"download")]/@href') for title, link in zip(titles, links): print(f"电影:{title.strip()}\n链接:{link}\n") ``` *代码说明*:使用`lxml`库解析HTML,`contains()`函数处理模糊匹配,`text()`获取节点文本[^1] #### 三、Java爬虫示例(电影天堂数据抓取) ```java Document doc = Jsoup.connect("https://dygod.com").get(); String xpathExpression = "//div[@class='co_content8']//a[starts-with(@href,'/html/')]"; XPathFactory xpathFactory = XPathFactory.newInstance(); XPath xpath = xpathFactory.newXPath(); NodeList nodes = (NodeList) xpath.evaluate(xpathExpression, doc, XPathConstants.NODESET); for (int i=0; i<nodes.getLength(); i++) { Element element = (Element) nodes.item(i); System.out.println("名称:" + element.text()); System.out.println("链接:" + element.attr("href")); } ``` *代码说明*:通过`Jsoup`+`XPath`实现,`starts-with()`处理链接前缀匹配[^3] #### 四、XPath的局限性 1. 无法直接处理动态加载内容(需配合Selenium等工具) 2. 复杂页面结构需要多级路径组合 3. 部分网站会设置XPath反爬机制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值