【发布时间】:2015-10-25 20:01:04
【问题描述】:
我制作了一个刮板,用于浏览论坛中的线程并保存用户发布的所有链接。问题是论坛使用了“你真的要离开网站吗”的东西。这使得我抓取的链接不完整,如下所示:
/leave.php?u=http%3A%2F%2Fwww.lonestatistik.se%2Floner.asp%2Fyrke%2FUnderskoterska-1242
要工作,它需要链接开头的网站域。
有没有办法以某种方式添加它?或者只是抓取目标网址。
def parse(self, response):
next_link = response.xpath("//a[contains(., '>')]//@href").extract()[0]
if len(next_link):
yield self.make_requests_from_url(urljoin(response.url, next_link))
posts = Selector(response).xpath('//div[@class="post_message"]')
for post in posts:
i = TextPostItem()
i['url'] = post.xpath('a/@href').extract()
yield i
-编辑- 所以,根据 eLRuLL 的回答,我这样做了。
def parse(self, response):
next_link = response.xpath("//a[contains(., '>')]//@href").extract()[0]
if len(next_link):
yield self.make_requests_from_url(urljoin(response.url, next_link))
posts = Selector(response).xpath('//div[@class="post_message"]')
for post in posts:
i = TextPostItem()
url = post.xpath('./a/@href').extract_first()
i['new_url'] = urljoin(response.url, url)
yield i
哪个有效。除此之外,我现在为每个帖子抓取一个网址,即使该帖子没有发布链接。
【问题讨论】:
-
尝试使用以前的 xpath
a/@href而不是./a/@href -
这现在是一个纯粹的 xpath 问题,您需要检查您网站上的正确路径。
-
是的,一直在尝试。猜猜我最终会得到它。感谢您的帮助!
标签: python web-crawler scrapy