pyspider 在index_page中爬取链接地址时,如果页面定义了 ,则详细页地址获取错误。
1.问题
pyspider 在index_page中爬取链接地址时,如果页面定义了<base href="">,则详细页地址获取错误。
2.代码
@every(minutes=5 * 60)
def on_start(self):
self.crawl('http://jhsjk.people.cn/result/?keywords=&button=%E6%90%9C%E7%B4%A2', callback=self.index_page)
def index_page(self, response):
for each in response.doc('div.fr ul.list_14 li a').items():
print(each.attr.href)
if each.attr.href.startswith("http://") or each.attr.href.startswith("https://"):
self.crawl(each.attr.href, callback=self.detail_page)
else:
self.crawl(urljoin(baseurl, each.attr.href), callback=self.detail_page)
3,程序运行结果
代码获取到的each.attr.href是由http://jhsjk.people.cn/result/。。。
和 链接指向的地址如:"article/29613458
"合成的,url为http://jhsjk.people.cn/result/article/29613458
。
但是,实际上页面自己定义了<base href="http://jhsjk.people.cn/
" />,因此,url地址应该是http://jhsjk.people.cn/article/29613458
。
- 希望能够改正上面的问题
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
没办法,程序中强制replace解决。