Python 抓取下一页。正确的规则语法
我正在尝试使用scrapy进行递归web抓取。我想转到“”并按“下一步”按钮从此网站获取所有产品名称和价格 我能够创建这个蜘蛛(工作正常): 但是,为了使代码更加专业,根据这一点,我想通过实现“规则”来做到这一点。我更改了代码,如示例所示,但它不起作用。它甚至不能从主页上获取数据Python 抓取下一页。正确的规则语法,python,scrapy,Python,Scrapy,我正在尝试使用scrapy进行递归web抓取。我想转到“”并按“下一步”按钮从此网站获取所有产品名称和价格 我能够创建这个蜘蛛(工作正常): 但是,为了使代码更加专业,根据这一点,我想通过实现“规则”来做到这一点。我更改了代码,如示例所示,但它不起作用。它甚至不能从主页上获取数据 # -*- coding: iso-8859-2 -*- import scrapy from DOZ2.items import prodItem from scrapy.linkextractors impor
# -*- coding: iso-8859-2 -*-
import scrapy
from DOZ2.items import prodItem
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
class DmozSpider(scrapy.Spider):
name = "DOZ2b"
allowed_domains = ["doz.pl"]
start_urls = ["https://www.doz.pl/apteka/k17_1-Przeciwbolowe"]
rules = (Rule(LinkExtractor(allow=(), restrict_xpaths=('//li[@class="next"]/a',)), callback="parse_page", follow= True),)
def parse_page(self, response):
for sel in response.xpath('//div[@class="details"]'):
i=prodItem()
i['price'] = sel.xpath('div[@class="price"]/span/text()').extract()[0]
i['name'] = sel.xpath('h3/a/text()').extract()[0]
i['link'] = sel.xpath('h3/a/@href').extract()[0]
yield i
如果有人能指出我做错了什么,而我的第二个代码不起作用,我将不胜感激?我做了所有必需的更改:创建了规则,更改了解析函数的名称,修改了受限路径
提前感谢您的帮助。在scrapy中有相当多的
爬行器
,所有这些爬行器只需扩展scrapy.Spider
,并添加一些功能即可。要使用它,您实际上需要在创建spider类时从中继承:
from scrapy.spiders import CrawlSpider
class MyCrawlSpider(CrawlSpider):
name = 'crawlspider1'
rules = ... # define your rules here
创建爬行器类时,如果要使用规则,则应继承
scrapy.spider.CrawlSpider
而不是scrapy.spider
。它现在正在工作。非常感谢。干杯我已经发布了答案,以便其他人可以更容易地找到它,不幸的是,不是每个人都阅读了评论。在侧注中,检查scrapy拥有的其他酷蜘蛛和爬行蜘蛛本身的文档:
from scrapy.spiders import CrawlSpider
class MyCrawlSpider(CrawlSpider):
name = 'crawlspider1'
rules = ... # define your rules here