python爬虫实例:爬取知乎首页专题信息

今天给大家演示下爬取知乎首页中的专题信息,含大标题及小标题,如下:
python爬虫实例:爬取知乎首页专题信息_第1张图片
python爬虫实例:爬取知乎首页专题信息_第2张图片
还是废话少说,直接上代码:

import requests
from pyquery import PyQuery as pq

url='https://www.zhihu.com/explore'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:78.0) Gecko/20100101 Firefox/78.0'}
response=requests.get(url,headers=headers).text
doc=pq(response)
#获取标题
items=doc('.ExploreSpecialCard.ExploreHomePage-specialCard')
for item in items.items():
    big_title=item('.ExploreSpecialCard-info').find('a').text()#大标题
    print(big_title)
    for item_2 in item('.ExploreSpecialCard-contentItem').items():
        small_title=item_2.find('a').text()#小标题
        print(small_title)
    print('\n')

爬取结果:
python爬虫实例:爬取知乎首页专题信息_第3张图片
知识点讲解:
这次用到的是pyquery模块,模块的应用方法不作解释,自行学习;
我们先查看源代码,找到所要信息的位置,如下先捋清楚父子节点:
python爬虫实例:爬取知乎首页专题信息_第4张图片然后编写脚本匹配到自己需要爬取的数据:

items=doc('.ExploreSpecialCard.ExploreHomePage-specialCard')
for item in items.items():
    big_title=item('.ExploreSpecialCard-info').find('a').text()#大标题
    print(big_title)
    for item_2 in item('.ExploreSpecialCard-contentItem').items():
        small_title=item_2.find('a').text()#小标题
        print(small_title)
    print('\n')

我刚开始最大的问题就是不知道怎么实现打印一个大标题后再打印其小标题,就如你看到的爬取结果那样;刚开始我写的都是先打印完所有大标题后再打印所有小标题,这显然不是我想要的。后来发现原来我一直把父节点选错了,我以为大标题是小标题的父节点,其实不是,他们是并列的关系;仔细看了源代码后找到正确的父节点,然后通过for循环嵌套的方式,最终找到自己想要的结果。

分享以上,欢迎指正探讨,谢谢。

感悟:困惑是暂时的,深入分析后总能找到答案。

你可能感兴趣的:(爬虫)