我使用scrapy HTTP POST方法抓取网站,然而,一些奇怪的问题一直困扰着我,我不知道哪里出了问题。 这是我的示例代码:
def parse(self, response):
sel = Selector(response)
# to generate next page
next_formdata = sel.css("next")
yield FormRequest(url=self.start_urls[0],
formdata=next_formdata,
callback=self.parse)
# to parse item
items = sel.css("items")
for item in items:
cur_formdata = item.css("form")
yield FormRequest(url=self.start_urls[0],
formdata=cur_formdata,
callback=self.parse_item)
def parse_item(self, response):
sel = Selector(response)
if len(sel.extract()) < 10000:
new_request = response.request.copy()
yield new_request
log.msg("item length is" + str(len(sel.extract())))
item = MyItem()
# get specific information
yield item
但是,我在日志信息中不断得到“项目长度为xxx”,其中xxx只有几百个。我试图实现的是防止目标网站出现错误页面,那么我该怎么做才能解决这个问题呢?谢谢!
答案 0 :(得分:1)
好吧,我开始意识到我没有添加else分支,所以当调用parse函数时,这个方法会在yield停止的地方继续。这是一个愚蠢的错误,对不起!