是否有一个简单的 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()
其实你并没有那么远。
实际上,您需要做的唯一更改是使用 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()