python - 让 scrapy spider 爬取整个站点

标签 python scrapy scrapy-spider

我正在使用 scrapy 来抓取我拥有的旧网站,我正在使用下面的代码作为我的蜘蛛。我不介意为每个网页输出文件,或者包含其中所有内容的数据库。但是我确实需要能够让蜘蛛抓取整个东西,而不必输入我目前必须做的每一个 url

import scrapy

class DmozSpider(scrapy.Spider):
    name = "dmoz"
    allowed_domains = ["www.example.com"]
    start_urls = [
        "http://www.example.com/contactus"
    ]

    def parse(self, response):
        filename = response.url.split("/")[-2] + '.html'
        with open(filename, 'wb') as f:
            f.write(response.body)

最佳答案

要抓取整个站点,您应该使用 CrawlSpider而不是 scrapy.Spider

Here's an example

为了您的目的尝试使用这样的东西:

import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor

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

    rules = (
        Rule(LinkExtractor(), callback='parse_item', follow=True),
    )

    def parse_item(self, response):
        filename = response.url.split("/")[-2] + '.html'
        with open(filename, 'wb') as f:
            f.write(response.body)

另外,看看这个 article

关于python - 让 scrapy spider 爬取整个站点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36837594/

相关文章:

python - Influxdb 读/写操作

python - 在 python 中组合列以获得新的日期格式

python - 将 Scrapy 与经过身份验证(登录)的用户 session 一起使用

python - 即使在他们的文档中给出的教程中也会出现 Scrapy 错误

python - 在Scrapy中创建可编辑的CrawlSpider规则

python - 刮痧 : AttributeError: 'list' object has no attribute 'iteritems'

python - 使用 scrapy 抓取多个页面

使用子进程的python脚本,将所有输出重定向到文件

python - scrapy : ERROR: Error downloading <GET http://stackoverflow. com/questions?sort=votes> TypeError: 'float' 对象不可迭代

python - 在 Python 中创建唯一对象数组