作者ug945 (ug945)
看板Python
標題Re: [問題] Scrapy 蜘蛛程式無法爬超過3個網頁
時間Sat Dec 13 02:50:53 2014
※ 引述《allen511081 (藍)》之銘言:
: 小弟是python 新手,最近想要抓一個鳥會的DataBase,但這個DataBase的頁面沒有其他
: 連結,於是自己以程式產出連結,並丟給爬蟲程式去爬,
: 程式可以正常執行,無奈程式只要爬超過三個網頁,
: 抓下來的資料順序就會出錯,請教各位大大,我該如何解決??
: 下面附上程式碼
: import scrapy
: import string
: from scrapy.http import Request
: from Birdtest.items import BirdItem
: class BirdSpider(scrapy.Spider):
: name = "bird"
: allowed_domains = ["webdata.bird.org.tw"]
: start_urls = ["http://webdata.bird.org.tw/contents.php?key=000001"]
: def parse(self, response):
: for sel in response.xpath('//tr/td[@colspan]'):
: item = BirdItem()
: item['desc'] = sel.xpath('text()').extract()
: yield item
: for i in xrange(2,5,1):
: url="http://webdata.bird.org.tw/contents.php?key=" + str(i)
: yield Request(url,self.parse)
1.在start_request()中產生連結或是直接寫死在start_urls中
2.xpath要限定範圍或數量
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.69.5
※ 文章網址: http://www.ptt.cc/bbs/Python/M.1418410257.A.B54.html
推 allen511081: 小弟不才,請問這位大大,小弟該如何實做出來? 12/16 11:21
→ ug945: Xpath 可以用迴圈限定只撈哪幾個TAG(第幾個td) 12/16 19:13
推 allen511081: 小弟已解決第二個問題了,還請大大協助解決第一個 12/17 18:12
→ ug945: override start_request() 然後return 一個[Request(url)] 12/18 02:00
→ ug945: 或是直接做一份url list 貼在 start_urls中 12/18 02:02
推 allen511081: 感謝大大,小弟的問題今天已全部解決了 12/18 16:52