爬虫练手项目1_爬取百度贴吧
前言
这是我开始学习爬虫时的第一个练手项目,当时是在B站上看到了一些教学视频,觉得还挺有意思的,就决定跟着学学。
1、找到对方c位(确定要爬取的目标)
要爬取网页,首先需要知道网页的url
先用浏览器打开贴吧网页.
搜索一下’上海海事大学‘
发现链接变成https://tieba.baidu.com/f?ie=utf-8&kw=上海海事大学&fr=search
点到第二页,再观察 url,发现多了一个pn=50的参数
把pn=50改成pn=0试试,发现它访问的是刚刚第一页的内容,
所以规律就被找到了,第一页是pn=0,第二页是pn=50,
那么第三页应该是pn=100,以此类推
至于另一个参数:ie=utf-8,可以删掉
所以,我们需要访问的链接格式为
https://tieba.baidu.com/f?kw=——&pn=——
2、发起进攻(发送请求)
上一步我们已经知道了要爬取的url
现在就需要发送请求了
至于怎么发送请求呢
就需要我们安装一个库了:requests库
pip install requests
然后导入这个库
import requests
然后开始构造url,存放在list里
url = 'https://tieba.baidu.com/f?kw={}&pn={}'
text = input("请输入贴吧的名字:")
num = int(input('输入要爬取的页数:'))
url_list = [url.format(text, i * 50) for i in range(num)]
print(url_list)
将浏览器标识复制过来,放到headers里面(部分网站会根据浏览器标识来判断是不是爬虫,所以加一个标识,以防万一)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'}
然后发送请求,并保存网页
for item_url in url_list:
response = requests.get(item_url, headers=headers)
file_name = '贴吧_' + text + '第{}页'.format(url_list.index(item_url) + 1) + '.html'
with open(file_name, 'w', encoding='utf-8') as f:
f.write(response.content.decode())
3、进攻敌方水晶(完整代码)
"""
获取贴吧内容
"""
import requests
url = 'https://tieba.baidu.com/f?kw={}&pn={}'
text = input("请输入贴吧的名字:")
num = int(input('输入要爬取的页数:'))
url_list = [url.format(text, i * 50) for i in range(num)]
print(url_list)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'}
for item_url in url_list:
response = requests.get(item_url, headers=headers)
file_name = '贴吧_' + text + '第{}页'.format(url_list.index(item_url) + 1) + '.html'
with open(file_name, 'w', encoding='utf-8') as f:
f.write(response.content.decode())
再pycharm打开保存的网页,运行一下
和浏览器搜索出来的网页一摸一样
victory
至此,就差不多完成了学习爬虫的第一步了
之后会慢慢更新我学习爬虫时的其他练手项目