打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python爬虫,爬取博客园文章列表

前言

本次的案例源自于蚂蚁老师的爬虫课程。但由于博客园网站作了升级,所以蚂蚁老师的示例代码失效了,我根据蚂蚁老师教授的知识结合网上搜索来的资料,重新编写了一份代码,复现了蚂蚁老师在课程中的演示效果。

需求

下面我们来明确一下需求 爬取博客园前20页的文章标题、对应的文章链接以及对应的点赞数 如图所示

网站分页设置

查看网站的html代码

整体分析

通过浏览器内置的查看网络部分,我们发现了点击分页时,实际请求的url并不是浏览器输入框中的信息,而是:https://www.cnblogs.com/AggSite/AggSitePostList

找到对应的请求部分

可以发现,对应的content-type信息,以及user-agent信息 我们将这俩信息对应放到代码的header部分,作为一个请求头附入request里面,模拟浏览器,防止网站的反爬虫措施干扰。另外,为了将爬虫伪装得更加像是一个浏览器,可以将请求负载也加到request中

局部分析

下面我们来找具体的信息藏在哪里 鼠标右键对应的内容,查看html代码,就可以发现如下内容

文章标题和url链接

点赞数

现在我们就可以根据前面的分析写代码了

代码编写

为了演示,我的代码只爬取了前3页的内容,如果你想要爬200页,可自行修改代码

"""
爬取前20页的文章标题、链接、点赞数
"
""
import requests
from bs4 import BeautifulSoup
import re
import json

for idx in range(1, 3):
 print("#" * 30, idx)
 url = "https://www.cnblogs.com/AggSite/AggSitePostList"

 headers = {"content-type""application/json""user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.30"}

 request_payload = {"CategoryType""SiteHome""ParentCategoryId": 0, "CategoryId": 808, "PageIndex": idx, "TotalPostCount": 4000, "ItemListActionName""AggSitePostList"}

 r = requests.post(url, data=json.dumps(request_payload), headers=headers)
 if r.status_code != 200:
  print(r.status_code)
  raise Exception()
 soup = BeautifulSoup(r.text, "html.parser")
 section_list = soup.find_all("section", class_="post-item-body")
 for section in section_list:
  a_tag = section.find("a", class_="post-item-title")
  passage_link = a_tag.get("href")
  passage_name = a_tag.get_text()

  span_tag = section.find("span", id=re.compile(r"^digg"))
  numbers = span_tag.get_text()

  print(passage_link, passage_name, numbers)

运行结果





本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
别再手敲了,这个工具可以自动生成python爬虫代码
关于爬虫的HTTP原理,看完这一长篇就够了!(附三大爬虫案例)
Python网络编程实战之爬虫技术入门与实践Python网络编程实战之爬虫技术入门与实践
Python爬虫原理
python-13:异常处理
小白学 Python 爬虫(16):urllib 实战之爬取妹子图
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服