xpath爬取不了输入关键字后的网页

xpath爬取不了输入关键字后的网页,第1张

网络爬虫只能根据你指定的url爬取网页的html代码,至于你想要包含指定内容的网页的话,只能先爬取下来网页,然后在对页面内容进行匹配(正则,也有开源工具)找到你想要的内容就可以了!顺便说一句网络爬虫不能根据关键字来爬取网页!

Selector选择器

在Scrapy中,也可以使用BeautifulSoup来解析网页,但是,我们推荐使用Scrapy自带的Selector选择器来解析网页,没别的原因,效率高。Selector选择器有XPath方法和css方法两种选择方法,我使用的是XPath方法。

XPath

XPath 是一门在 XML 文档中查找信息的语言。因为网上的教程有很多,在此处推荐两个,我自己就不多讲了。一个菜鸟教程的XPath文字教程,一个是极客学院的XPath视频教程,后者需要实名认证一下就可以观看,也不麻烦,个人比较推崇后者,老师讲的很易懂。相信我,根据教程只需要半个小时你就能明白XPath,再根据下面我的代码对照巩固一下,你就能掌握它了。

使用Chrome分析网页

我们使用Chrome浏览器(firefox也是类似的)来分析网页,分析我们的XPath该怎么去写,比如说我们现在要分析帖子的标题

右键帖子标题,选择检查

检查

此时,Chrome的调试工具会跳出来,并且自动定位到源代码中我们要检查的元素的位置

检查2

之后根据代码结构我们很轻松的就得出其XPath

//[@id="thread_subject"]/text()

1

其实在某些时候也可以直接右键元素,选择copy xpath,但是这种方法在实践中用处基本为零,因为很难去找出多个网页的共同特质,所以一般情况下我们还是要自己去分析。

自动生成

在这里有必要提醒一个神坑,在下面代码中也有体现,详见我从前写的这篇文章Scrapy匹配xpath时tbody标签的问题

这个坑给我的启示是,当发现了感觉不能用科学解释的错误的时候,就检查一下获取到的源代码吧!

代码

不说废话了,直接上代码。

首先,修改itemspy文件,定义好我们要提取的内容

# -- coding: utf-8 --

import scrapy

class HeartsongItem(scrapyItem):

title = scrapyField() # 帖子的标题

url = scrapyField() # 帖子的网页链接

author = scrapyField() # 帖子的作者

post_time = scrapyField() # 发表时间

content = scrapyField() # 帖子的内容

然后来到heartsong_spiderpy,编写爬虫

# -- coding: utf-8 --

# import scrapy # 可以写这句注释下面两句,不过下面要更好

from scrapyspiders import Spider

from scrapyselector import Selector

from heartsongitems import HeartsongItem # 此处如果报错是pyCharm的原因

class HeartsongSpider(Spider):

name = "heartsong"

allowed_domains = ["heartsongtop"] # 允许爬取的域名,非此域名的网页不会爬取

start_urls = [

">

如果你是在浏览器 开发工具 提取的xpath,很多情况下是不能用到scrapy中的,

因为浏览器看到的dom树可能是js脚本动态修改过的(这种情况非常常见),你需要直接查看html源码,分析。

以上就是关于xpath爬取不了输入关键字后的网页全部的内容,包括:xpath爬取不了输入关键字后的网页、尝试用scrapy提取网页中的网址、使用scrapy做爬虫,xpath选择器为什么无法定位到网页的某些节点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9761106.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存