gpt4 book ai didi

python - Scrapy SgmlLinkExtractor

转载 作者:行者123 更新时间:2023-12-01 05:50:12 26 4
gpt4 key购买 nike

我正在尝试让 scrapy 蜘蛛正常工作,但 SgmlLinkExtractor 似乎有问题。

这是签名:

SgmlLinkExtractor(allow=(), deny=(), allow_domains=(), deny_domains=(), restrict_xpaths(), tags=('a', 'area'), attrs=('href'), canonicalize=True, unique=True, process_value=None)

我正在使用allow()选项,这是我的代码:

start_urls = ['http://bigbangtrans.wordpress.com']
rules = [Rule(SgmlLinkExtractor(allow=[r'series-\d{1}-episode-\d{2}.']), callback='parse_item')]

示例网址类似于 http://bigbangtrans.wordpress.com/series-1-episode-11-the-pancake-batter-anomaly/

scrapy scrapy tbbt 的输出包含

[tbbt] DEBUG: Crawled (200) http://bigbangtrans.wordpress.com/series-3-episode-17-the-precious-fragmentation/> (referer: http://bigbangtrans.wordpress.com)

但是,parse_item 回调没有被调用,我不明白为什么。

这是整个蜘蛛代码:

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector

class TbbtSpider(CrawlSpider):
#print '\n TbbtSpider \n'
name = 'tbbt'
start_urls = ['http://bigbangtrans.wordpress.com'] # urls from which the spider will start crawling
rules = [Rule(SgmlLinkExtractor(allow=[r'series-\d{1}-episode-\d{2}.']), callback='parse_item')]


def parse_item(self, response):
print '\n parse_blogpost \n'
hxs = HtmlXPathSelector(response)
item = TbbtItem()
# Extract title
item['title'] = hxs.select('//div[@id="post-5"]/div/p/span/text()').extract() # XPath selector for title
return item

最佳答案

好的,这段代码不起作用的原因是您的规则的语法不正确。我修复了语法而没有进行任何其他更改,并且能够命中 parse_item 回调。

rules = (
Rule(SgmlLinkExtractor(allow=(r'series-\d{1}-episode-\d{2}.',),
),
callback='parse_item'),
)

但是标题全是空白,这表明 parse_item 中的 hxs.select 语句不正确。下面的 xpath 可能更合适(我对所需的标题进行了有根据的猜测,但我可能完全找错了树)

item['title'] = hxs.select('//h2[@class="title"]/text()').extract() 

关于python - Scrapy SgmlLinkExtractor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14573886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com