爬取贴吧十页内容,保存到指定文件夹下:分别名字:第一页html,第二页html....
代码如下:
from urllib import request,parse 导入请求包,和转码包
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
url1='https://tieba.baidu.com/f?' 百度搜索一个贴吧网址,去掉动态参数,
留下静态固定网址,配置检索参数,并
转码为后续完整URL做准备
name=input('输入检索名字:')
source={"kw":name}
url2=parse.urlencode(source)
先把静态url与检索参数拼凑到一块,
但不完善,还缺页码,再继续补上
url3=url1+url2
for page in range(1,11):
pn=(page-1)*50
full_url=url3+'&pn='+str(pn) 把最终的url拼凑完整
res=request.Request(url=full_url,headers=headers)
response=request.urlopen(res) 把完整的url请求给出一个响应
把该响应写入指定文件下,并创造文件内容。
俩种写入文件方式
with open('begin_body/第%s页.html'%page,'w',encoding='utf-8') as f:
f.write(response.read().decode('utf-8'))
request.urlretrieve(url=full_url,filename='第%s页.html'%page)
爬虫步骤
1、确定网站内数据的加载方式(数据局部刷新、页面刷新)
区别:局部刷新 页面的url不会发生改变 页面刷新 页面的url会发生改变
1、局部刷新
1、F12 --> NetWork --> XHR
2、清空所有请求
3、点击加载更多或者下一页
4、新出来的地址就是我们需要发送的请求地址
2、页面刷新
1、直接点击下一页
2、观察页面url的变化
3、去掉没用的信息
4、拼接url
2、构造请求头
1、添加UA字段
2、如果数据不能正常返回 添加refere字段
3、如果数据还不能正常返回 添加cookie字段
3、如果是POST方式 那么需要 构造参数 观察参数的传递格式(字典/json串) 然后进行编码
4、构造请求(url headers data)
5、发起请求
6、读取数据(注意编解码) 如果是json字符串 需要将json字符串转换为字典
7、处理数据