我希望使用scrapy和python2.7.11来刺激FormRequest抓取http://www.istic.ac.cn/suoguan/QiKan_ShouYe.htm?lan=en&journalId=IELEP0229&yp=2018
这是我的代码:
def start_requests(self):
posturl = 'http://www.istic.ac.cn/suoguan/essearch.ashx'
url = 'http://www.istic.ac.cn/suoguan/QiKan_ShouYe.htm?lan=en&journalId=IELEP0229&yp=2018'
journalId = re.search(r'journalId=(.*?)&', url).group(1)
yearNum = re.search(r'&yp=(\d+)', url).group(1)
postdata = {
"indexname" : "xw_qk",
"search" : "{0}/F(F_ReqNum)*{1}/F(F_YEAR)".format(journalId, yearNum),
"page" : "0",
"pagenum" : "20",
"sort" : "",
"type" : "content",
}
print journalId, yearNum
print postdata
self.logger.info('Visit_headpage........................')
yield FormRequest(posturl, formdata = postdata, callback = self.parse_item)
我需要在表格中发布以下数据:
^{pr2}$正确抓取页面。在
但我的回答是什么都没有,所以我用fiddler找到了数据发布表单,它是:
indexname=xw_qk&
search=IELEP0229%2FF%28F_ReqNum%29%2A2018%2FF%28F_YEAR%29
&page=0&pagenum=20sort=&&type=content
所以这意味着这三个信号解码错误:'(',')','*'。
但当我在scrapy log中打印formdata时,它的格式仍然正确:
{indexname':'xw_qk', 'search':'IELEP0229/(F_ReqNum)*2018/(F_YEAR)',
'page':'0', 'pagenum':'20', 'sort':'', 'type':'content}
那我该怎么解决呢?在
我建议使用},因为我在使用这个函数时遇到了很多麻烦。在
Request(method='POST')
而不是{并尝试像这样将参数直接附加到
posturl
中并连接其他参数
他们发送的是相同的东西(scrapy的FormRequest只是url编码的),但我认为它发生的是,当你第一次登陆
http://www.istic.ac.cn/suoguan/QiKan_ShouYe.htm?lan=en&journalId=IELEP0229&yp=2018
时,它需要接收一个cookie,请尝试以下操作:它应该输出
[u'facets', u'hits', u'took']
相关问题 更多 >
编程相关推荐