作者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://webptt.com/cn.aspx?n=bbs/Python/M.1418410257.A.B54.html
1F:推 allen511081: 小弟不才,请问这位大大,小弟该如何实做出来? 12/16 11:21
2F:→ ug945: Xpath 可以用回圈限定只捞哪几个TAG(第几个td) 12/16 19:13
3F:推 allen511081: 小弟已解决第二个问题了,还请大大协助解决第一个 12/17 18:12
4F:→ ug945: override start_request() 然後return 一个[Request(url)] 12/18 02:00
5F:→ ug945: 或是直接做一份url list 贴在 start_urls中 12/18 02:02
6F:推 allen511081: 感谢大大,小弟的问题今天已全部解决了 12/18 16:52