Python如何抓取新榜和豆瓣阅读的数据?
公司最近在做上量,用两天时间从零开始学习,写了两个网站的抓取 demo、
新榜抓取: 1、接口是加密的,通过页面的 js 分析出了接口请求数据的加密规则。 2、需要登录才能获取数据。通过 selenium 模拟用户登录。然后抓取数据 豆瓣阅读: 1、频繁请求会封掉 ip、使用随机代理、请求延迟去获取数据
项目地址戳我,喜欢的话给个 star 吧。
Python如何抓取新榜和豆瓣阅读的数据?
4 回复
第一次发帖。好紧张,自己顶一下。
要抓取新榜和豆瓣阅读的数据,核心是分析它们的网页结构,然后用requests库发送HTTP请求,再用BeautifulSoup或lxml解析HTML。不过,这两个网站都有反爬机制,直接爬取可能会被屏蔽。
新榜数据抓取: 新榜的数据接口通常需要登录,且数据通过API返回。你可以先登录后,从浏览器开发者工具的Network面板找到数据接口,然后模拟请求。这里提供一个基础示例,但实际使用时需要处理登录态和参数:
import requests
from bs4 import BeautifulSoup
# 示例:抓取新榜的某个榜单页(可能需要处理登录和动态参数)
url = 'https://www.newrank.cn/public/info/list.html'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
# 注意:可能需要添加cookies或session维持登录状态
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
# 根据实际HTML结构解析数据
豆瓣阅读数据抓取: 豆瓣阅读页面相对静态,但同样有反爬。需要模拟浏览器头,并控制请求频率:
import requests
from bs4 import BeautifulSoup
import time
url = 'https://read.douban.com/'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
# 示例:提取书籍标题(需根据实际页面结构调整选择器)
books = soup.select('.title a')
for book in books:
print(book.get_text())
time.sleep(1) # 避免请求过快
关键点:
- 反爬处理:两个网站都可能需要
User-Agent、Cookies或Session,甚至验证码处理。 - 数据解析:使用开发者工具检查元素结构,确保选择器准确。
- 遵守规则:注意
robots.txt,避免高频请求,防止IP被封。
总结: 抓取这类网站的关键在于模拟浏览器请求并解析动态内容。
支持 py3 就好了
写的时候 由于刚接触 不了解 2 和 3 有啥区别 mac 上自带 2.7 版本,所以就直接用了。。。。

