这个蜘蛛从Funny subreddit页面中删除了标题。 我认为问题可能在于允许的URL,因为/ funny主页与那个不匹配。如果我将'/ r / funny /'添加到允许的列表中,它将会疯狂并且爬行太多。此外,不确定每个页面的第一个项目是错误的(有时可能是上一页的最后一项。
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.http.response import Response
class Lesson1Spider(CrawlSpider):
name = 'lesson1'
allowed_domains = ['www.reddit.com']
start_urls = ['http://www.reddit.com/r/funny/']
rules = [
Rule(LinkExtractor(
allow=['/r/funny/\?count=\d*&after=\w*',]),
callback='parse_item',
follow=True ),
]
def parse_item (self, response):
print(response.xpath('//p[@class="title"]/a/text()').extract())
答案 0 :(得分:0)
对于问题的第一部分,您的规则似乎与您的起始网址相矛盾。第一页 - http://www.reddit.com/r/funny/
- 没有/r/funny/\?count=\d*&after=\w*
,因此可能会跳过它。使用每页底部的上一个/下一个按钮指定下一页可能会给您带来更好的结果。
至于第二部分,可能是你在刮擦和检查之间的reddit上的排名发生了变化,或者源代码中有什么东西(任何其他p
元素都有类标题?)你没有考虑到。
答案 1 :(得分:0)
我能找到的最佳解决方案是在同一个文件中运行两个独立的蜘蛛。一个用于第一页,一个用于第2页。这可能不是最有效的代码,但是新的,我很满意所有组件的工作。任何关于清理它的建议都会受到欢迎。
$(this)