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

来源:6-13 知乎分析以及数据表设计 - 2

qq_擦肩而过再回首_0

2018-04-11

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)

写回答

1回答

bobby

2018-04-12

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

0
2
bobby
回复
qq_擦肩而过再回首_0
好的,
2018-04-16
共2条回复

Scrapy打造搜索引擎 畅销4年的Python分布式爬虫课

带你彻底掌握Scrapy,用Django+Elasticsearch搭建搜索引擎

5796 学习 · 6290 问题

查看课程