yield python3 知乎_过滤不了知乎首页的URL-已解决

def parse(self, response):

"""

提取出html页面中的所有url 并跟踪这些url进行一步爬取

如果提取的url中格式为 /question/xxx 就下载之后直接进入解析函数

"""

all_urls = response.css("a::attr(href)").extract()

all_urls = [parse.urljoin(response.url, url) for url in all_urls]

all_urls = filter(lambda x:True if x.startswith("https") else False, all_urls)

match_obj = re.match("(.*zhihu.com/question/(\d+))(/|$).*", url)

if match_obj:

#如果提取到question相关的页面则下载后交由提取函数进行提取

request_url = match_obj.group(1)

yield scrapy.Request(request_url, headers=self.headers, callback=self.parse_question)

else:

#如果不是question页面则直接进一步跟踪

yield scrapy.Request(url, headers=self.headers, callback=self.parse)

解决办法:

将 :all_urls = [parse.urljoin(response.url, url) for url in all_urls]

他过滤后值是,所以过滤url失败

修改成:all_urls = list(filter(lambda x: True if x.startswith("https") else False, all_urls))

注:老师的这行代码,视频上用没有出问题,还搞不明白是不是语法错误,知道的同学,可以补充下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值