请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

all_urls一直追踪不到符合正则表达式的url

def parse(self, response):
   # 提取出html页面中的所有url,并跟踪这些url进行进一步爬取
   #      如果提取的url中格式为/question/xxx 就下载之后直接进入解析函数
   all_urls = response.css(" a::attr(href)").extract()
   # 为所有的urls添加域名
   all_urls = [parse.urljoin(response.url, url) for url in all_urls]
   # 过滤url
   all_urls = filter(lambda x: True if x.startwith("https") else False, all_urls)

   for url in all_urls:
       # if  url.startwith("https")
       match_obj = re.match("(.*zhihu.com/question/(\d+))(/|$).* ", url)
       if match_obj:
           # 如果提取到question相关的页面后交给提取函数进行提取
           request_url = match_obj.group(1)
           question_id = match_obj.group(2)
           # 提交给下载器
           yield scrapy.Request(request_url, headers=self.header, callback=self.parse_question)
       else:
           # 如果不是question页面则直接进一步跟踪
           yield scrapy.Request(url, headers=self.headers, callback=self.parse)

正在回答 回答被采纳积分+3

1回答

bobby 2018-04-12 11:24:24

你先提取出url 我看看 是否和你的正则表达式有匹配的? 有没有可能是因为你的正则表达式有问题?你可以随意获取一个html,然后用你的正则表达式自己用py脚本去测试一下看看你的正则表达式是否正确

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信