Scrapy 脚本的简单示例,它遍历给定站点上的所有 URL,并为每个页面生成 URL 作为变量

问题描述 投票:0回答:1

是否有一个简单的 Scrapy 脚本示例,可以从 python 脚本调用并访问网站上的每个 URL,给出访问的每个页面的 URL。

这是我目前所拥有的,但这绝对行不通。它甚至不会运行。

from scrapy.spiders import CrawlSpider
from twisted.internet import process


class MySpider(CrawlSpider):
    name = 'toscrape'
    allowed_domains = ['toscrape.com']
    start_urls = ['http://books.toscrape.com']

    def parse(self, response):
        do_something(response.url)

    def do_something(self, url):
        # pass do something here
        pass

    
process.crawl(MySpider)
process.start()
python web-scraping scrapy web-crawler
1个回答
0
投票

其实你并没有那么远。

实际上,您需要做的唯一更改是使用 scrapy 中的 CrawlerProcess 而不是扭曲版本,然后处理站点的分页和/或直接迭代页面 url 列表。前者是更好的选择。

像这样:

import scrapy
from scrapy.crawler import CrawlerProcess


class MySpider(scrapy.Spider):
    name = 'toscrape'
    allowed_domains = ['toscrape.com']
    start_urls = ['http://books.toscrape.com']

    def parse(self, response):
        yield {"url": response.url}
        next_link = response.xpath('//li[@class="next"]/a/@href').get()
        if next_link:
            yield scrapy.Request(response.urljoin(next_link))


process = CrawlerProcess()    
process.crawl(MySpider)
process.start()
© www.soinside.com 2019 - 2024. All rights reserved.