簡體   English   中英

Python Scrapy無法抓取網站

[英]Python Scrapy does not crawl website

我是python scrapy的新手,並嘗試通過一個小例子,但是我遇到了一些問題! 我只能抓取第一個給定的URL,但是我不能抓取一個以上的頁面或整個網站!

請幫助我,或者給我一些建議,讓我大致上可以爬行整個網站或更多頁面...

我正在執行的示例非常簡單... My items.py

import scrapy
    class WikiItem(scrapy.Item):
        title = scrapy.Field()

我的Wikip.py(蜘蛛)

import scrapy
from wiki.items import WikiItem

class CrawlSpider(scrapy.Spider):
    name = "wikip"
    allowed_domains = ["en.wikipedia.org/wiki/"]
    start_urls = (
        'http://en.wikipedia.org/wiki/Portal:Arts',
    )

    def parse(self, response):
        for sel in response.xpath('/html'):
            item = WikiItem()
            item['title'] = sel.xpath('//h1[@id="firstHeading"]/text()').extract()
            yield item

當我在根項目目錄中運行scrapy crawl wikip -o data.csv時 ,結果是:

title

Portal:Arts

誰能給我我的見解,為什么它不跟隨URL並更深入地爬行?

我已經檢查了一些相關的SO問題,但它們並沒有幫助解決問題

蜘蛛是最簡單的蜘蛛。 更改名稱CrawlSpider,因為Crawl Spider是scrapy的通用蜘蛛之一。

可以使用以下選項之一:

例如:1. class WikiSpider(scrapy.Spider)

或2. class WikiSpider(CrawlSpider)

如果使用的是第一選項,則需要編寫邏輯代碼以跟蹤需要在該網頁上訪問的鏈接。

對於第二個選項,您可以執行以下操作:

在起始網址之后,您需要定義以下規則:

rules = ( Rule(LinkExtractor(allow=('https://en.wikipedia.org/wiki/Portal:Arts\\?.*?')), callback='parse_item', follow=True,), )

另外,如果您使用CrawlSpider,請更改定義為“ parse ”的函數的名稱。 爬網蜘蛛使用解析方法來實現邏輯。 因此,在這里您嘗試覆蓋parse方法,因此抓取蜘蛛不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM