如何抓取网站上的每个链接并使用scrapy收集所有文本

如何抓取网站上的每个链接并使用scrapy收集所有文本,scrapy,scrapy-spider,Scrapy,Scrapy Spider,我跟着林克 https://stackoverflow.com/questions/19254630/how-to-use-scrapy-to-crawl-all-items-in-a-website 但事情不适合我 我正在努力学习通过网络抓取数据。我正在实现上给出的教程 并且能够爬过给定的链接 下面是示例代码快照 from scrapy.spiders import Spider from scrapy.selector import Selector from dirbot.items i

我跟着林克

https://stackoverflow.com/questions/19254630/how-to-use-scrapy-to-crawl-all-items-in-a-website

但事情不适合我

我正在努力学习通过网络抓取数据。我正在实现上给出的教程

并且能够爬过给定的链接 下面是示例代码快照

from scrapy.spiders import Spider
from scrapy.selector import Selector

from dirbot.items import Website


class DmozSpider(Spider):
    name = "dmoz"
    allowed_domains = ["dmoz.org"]
    start_urls = [
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/",
    ]

    def parse(self, response):
        """
        The lines below is a spider contract. For more info see:
        http://doc.scrapy.org/en/latest/topics/contracts.html

        @url http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/
        @scrapes name
        """
        sel = Selector(response)
        sites = sel.xpath('//ul[@class="directory-url"]/li')
        items = []

        for site in sites:
            item = Website()
            item['name'] = site.xpath('a/text()').extract()
            item['url'] = site.xpath('a/@href').extract()
            item['description'] = site.xpath('text()').re('-\s[^\n]*\\r')
            items.append(item)

        return items
项目的代码捕捉为

 from scrapy.item import Item, Field


class Website(Item):

    name = Field()
    description = Field()
    url = Field() 
我能够使用
scrapy crawl dmoz运行爬虫程序

但不能做到以下几点

1. All given link on website
2. Didn't get all text from all possible link 
3. Want to save them to a file 
有人能指导我,我的代码需要做哪些更改才能实现我的目标吗

  • 网站上所有给定的链接

    响应中没有
    class=“directory url”
    。 您可以使用
    sites=sel.xpath('//a/@href')
    从网站获取所有给定的链接,而不是使用该链接。过滤所需的URL

    如果可以从主域开始(
    http://www.dmoz.org/
    ),比如

    doc=html.fromstring(response.body)
    sites=doc.xpath('.//section[@id=“category section”]///aside')

    对于站点中的站点:
    item=StackDemoItem()
    item['name']=site.xpath('.//div/h2/a/text())
    item['url']=site.xpath('.//div/h2/a/@href')

    你必须在域名后面加上
    项['url']
    ,才能获得正确的url。对url路径的其他页面也要这样做

  • 没有从所有可能的链接获取所有文本

    大多数链接都没有文本。因此,您必须从url本身剥离内容。否则
    text=sel.xpath('//a/text()')

  • 要将它们保存到文件中吗

    您可以简单地使用
    scrapy crawl\u crawler\u name-o out.csv保存内容,对此类文件使用json或txt而不是csv