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

nkhmeac6  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(143)

有没有一个简单的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()
yruzcnhs

yruzcnhs1#

你其实也没差那么远。
实际上,你需要做的唯一改变是使用scrappy的CrawlerProcess而不是twisted版本,然后处理网站的分页和/或直接迭代页面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()

相关问题