【发布时间】:2022-01-18 22:02:20
【问题描述】:
我想从网页上抓取文章(例如文章enter link description here)。我的代码应该抓取所有文章文本。我是通过 XPath 来做的。在开发工具中粘贴以下 XPath 后:(1.crtl+shift+i /// 2. ctrl+f)
//div[@class="item-page clearfix"]/*[self::p/text() or self::strong/text() or self::ol/text() or self::blockquote/text()]
它似乎可以工作并且能够找到所有文本。网页显示 XPath 工作正常。但我的 Python 和 Scrapy 不这么认为。 JSON 中的以下代码仅返回文章的第一段。我不明白为什么。为什么在网页上它可以工作而在 Python 中却不行?我错过了什么?
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from w3lib.html import remove_tags
class LubaczowSpider(CrawlSpider):
name = 'Lubaczow'
allowed_domains = ['zlubaczowa.pl']
start_urls = ['http://zlubaczowa.pl/index.php/']
rules = (
Rule(LinkExtractor(restrict_xpaths="//p[@class='readmore']/a"), callback='parse', follow=True),)
def parse(self, response):
yield {
"Text" : response.xpath('normalize-space(//div[@class="item-page clearfix"]/*[self::p/text() or self::strong/text() or self::ol/text() or self::blockquote/text()])').getall(),
"Url" : response.url
}
提前感谢您的建议和帮助!
【问题讨论】:
-
请给出一个清晰的例子说明当前的结果和期望的结果。
标签: python-3.x web-scraping xpath scrapy