[英]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.