利用通用网页框架爬取百度贴吧数据,输入西游记,并爬取该内容指定网页(1页)范围内的数据,并要求将数据打印出来
时间: 2024-06-12 08:05:20 浏览: 168
毕设&课设&项目&实训-基于HTML+CSS+JavaScript技术实现的一个简单的网页前端,主题是“西游记”.zip
由于百度贴吧数据的反爬机制较为严格,因此需要使用代理IP和模拟登录等技术来提高爬取成功率。以下是一个利用通用网页框架爬取百度贴吧数据的Python程序示例:
```python
import requests
from bs4 import BeautifulSoup
# 设置请求头信息
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'
}
# 设置代理IP
proxies = {
'http': 'http://127.0.0.1:8888',
'https': 'http://127.0.0.1:8888'
}
# 模拟登录百度贴吧
session = requests.session()
login_url = 'https://passport.baidu.com/v2/?login'
data = {
'staticpage': 'https://tieba.baidu.com/index.html',
'charset': 'utf-8',
'token': 'null',
'tpl': 'tb',
'apiver': 'v3',
'tt': '1583983694667',
'codestring': '',
'safeflg': '0',
'u': 'https://tieba.baidu.com/index.html',
'isPhone': '',
'detect': '1',
'gid': '',
'quick_user': '0',
'logintype': 'dialogLogin',
'logLoginType': 'pc_loginDialog',
'idc': '',
'loginmerge': 'true',
'splogin': 'rate',
'username': 'your_username',
'password': 'your_password',
'verifycode': '',
'mem_pass': 'on',
'rsakey': '',
'crypttype': '12',
'ppui_logintime': '9194',
'countrycode': '',
'fp_uid': 'e1e18d04f62c1c8ab8a02d2f25f2a37a',
'fp_info': 'e1e18d04f62c1c8ab8a02d2f25f2a37a',
'loginversion': 'v4',
'dv': 'tkv5.5.5'
}
session.post(login_url, headers=headers, data=data, proxies=proxies)
# 爬取指定网页的数据
url = 'https://tieba.baidu.com/f?kw=西游记&ie=utf-8&pn=0'
response = session.get(url, headers=headers, proxies=proxies)
soup = BeautifulSoup(response.text, 'html.parser')
posts = soup.select('.j_thread_list .threadlist_title a')
for post in posts:
print(post.get('title'))
```
说明:
1. 首先设置请求头信息和代理IP,其中请求头信息需要模拟浏览器发送请求,以避免被服务器识别为爬虫。
2. 使用requests.session()创建一个会话,通过模拟登录百度贴吧来获取登录后的会话信息,以便后续的页面访问。
3. 爬取指定网页的数据时,使用session.get()方法发送GET请求,并通过BeautifulSoup解析HTML文档,提取出帖子的标题信息并打印出来。需要注意的是,需要设置pn参数来指定爬取的页码范围。
阅读全文