设为首页
收藏本站
开启辅助访问
切换到窄版
快捷导航
登录
|
立即注册
门户
Portal
论坛
BBS
淘宝
腾讯
谷歌
雅虎
百度
搜狐
新浪
网易
京东
搜索
搜索
热搜:
活动
交友
discuz
本版
文章
帖子
用户
蓝色火焰
»
论坛
›
蓝色火焰
›
百度
›
python爬虫-百度搜索结果爬取(一)
1
2
/ 2 页
下一页
返回列表
python爬虫-百度搜索结果爬取(一)
12
回复
140
查看
[复制链接]
微信扫一扫 分享朋友圈
油油娇娇淑芬
当前离线
积分
11
油油娇娇淑芬
3
主题
5
帖子
11
积分
新手上路
新手上路, 积分 11, 距离下一级还需 39 积分
新手上路, 积分 11, 距离下一级还需 39 积分
积分
11
发消息
发表于 2023-4-9 18:48:04
|
显示全部楼层
|
阅读模式
大家好,这次写个文章开始讲解爬虫的相关知识,主要包含,爬虫的简介,再就是带大家做一个简单的通用爬虫。
一、爬虫的简介
1.什么是爬虫
通过编程,模拟浏览器上网,然后让其去互联网上抓取数据的过程,我在一般都是用来爬取网上的数据玩,有时候也会用爬虫来下载图片。
2.爬虫中的矛与盾
反爬机制:门户网站通过制定响应的策略或者技术手段,防止爬虫程序进行网站数据爬取
反反爬机制:破解反爬机制
robots.txt协议:规定那些数据可以爬取,哪些不能爬取。
注意:数据不能乱爬吼,要遵循,robots.txt的协议哦[狗头]。
二、爬虫的分类
通用爬虫:抓取互联网中的一整张页面数据
聚焦爬虫:在通用爬虫的基础上,抓取页面中的特定的局部内容。
增量爬虫:检测网站中数据更新情况,只会抓取网站中最新更新出来的数据
三、通用爬虫之爬取百度搜索的页面
主要用的模块为requests,主要的流程如下图所示,我们以爬取百度搜索结果的爬虫为例来解释爬虫的运作过程。
1.获取初始的URL:
首先搜索“秦国”可以在地址栏找到地址:地址较长,我们可以截取前半部分就行,也就是下面这个地址,可以看出搜索内容就是秦国后面的内容。
https://www.baidu.com/s?wd=秦国
搜索内容
通过param来存储搜索内容,在发起请求的时候,requests会自动进行拼接。
# 定义url的地址
url = r'https://www.baidu.com/s?ie=utf-8&f=3&rsv_bp=1&rsv_idx=1&tn=baidu&'
# 定义搜索内容
kw = '秦国'
param = {
'wd': kw
}
2.获取请求头
User Agent
中文名为用户代理,简称 UA,它使得服务器能够识别客户使用的操作系统及版本。可以通过在浏览器按住F12,然后点开网络,随便查询一个请求,找到消息头里的请求头,就可以获取用户代理了,这样就可以让爬虫伪装成浏览器进行访问。
如何获取用户代理
使用head请求头来伪装成浏览器,让服务器认为是浏览器,如下面代码所示:
# 伪装请求头
head = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0'}3.发起请求
使用requests的get方法发起请求,如下图所示,url使用上面的url,参数使用上面定义的param,请求头则使用head。
# 发起请求
response = requests.get(url=url, params=param, headers=head)4.获取请求内容并解析
使用response.test来获取响应的内容,然后存储起来,完整的程序,如下图所示,这样就可以把“秦国”这个搜索页面下载下来。有一个名为“秦国.html”的文件,就证明你的程序运行成功了。
import requests
if __name__ == "__main__":
# 定义url的地址
url = r'https://www.baidu.com/s?ie=utf-8&f=3&rsv_bp=1&rsv_idx=1&tn=baidu&'
# 定义搜索内容
kw = '秦国'
param = {
'wd': kw
}
# 伪装请求头
head = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0'}
# 发起请求
response = requests.get(url=url, params=param, headers=head)
# 获取请求结果
result = response.text
# 定义储存结果的文件名
filename = kw+'.html'
# 存储文件
with open(filename, 'w', encoding='utf-8') as tem:
tem.write(result)
print(filename, '保存成功')
关于通用爬虫的内容就介绍到这里,如果你想了解更多的关于python的内容,可以参考我下面的这两篇回答,里面也有部分关于爬虫的内容哦:
回复
使用道具
举报
上善伐谋先伐心
当前离线
积分
3
上善伐谋先伐心
1
主题
4
帖子
3
积分
新手上路
新手上路, 积分 3, 距离下一级还需 47 积分
新手上路, 积分 3, 距离下一级还需 47 积分
积分
3
发消息
发表于 2023-4-9 18:48:40
|
显示全部楼层
大佬,请问一下,我爬出来是乱码为什么啊?
回复
使用道具
举报
任蛟龙
当前离线
积分
9
任蛟龙
2
主题
6
帖子
9
积分
新手上路
新手上路, 积分 9, 距离下一级还需 41 积分
新手上路, 积分 9, 距离下一级还需 41 积分
积分
9
发消息
发表于 2023-4-9 18:49:09
|
显示全部楼层
你在这个位置加一句print(response.encoding),看看网页的编码类型是啥,然后把后面文件的解码类型改成这个格式,就OK了
[图片]
回复
使用道具
举报
方思向
当前离线
积分
21
方思向
4
主题
12
帖子
21
积分
新手上路
新手上路, 积分 21, 距离下一级还需 29 积分
新手上路, 积分 21, 距离下一级还需 29 积分
积分
21
发消息
发表于 2023-4-9 18:49:16
|
显示全部楼层
爬不了几次就被封掉了
回复
使用道具
举报
萝卜坑
当前离线
积分
11
萝卜坑
2
主题
7
帖子
11
积分
新手上路
新手上路, 积分 11, 距离下一级还需 39 积分
新手上路, 积分 11, 距离下一级还需 39 积分
积分
11
发消息
发表于 2023-4-9 18:50:11
|
显示全部楼层
其实按百度的robots协议,他家的东西一个都不能爬。。。
回复
使用道具
举报
那年那月那时的我
当前离线
积分
11
那年那月那时的我
2
主题
9
帖子
11
积分
新手上路
新手上路, 积分 11, 距离下一级还需 39 积分
新手上路, 积分 11, 距离下一级还需 39 积分
积分
11
发消息
发表于 2023-4-9 18:51:08
|
显示全部楼层
可以参考:https://www.zhihu.com/pin/1491768536188485632
回复
使用道具
举报
不爱听辣妹子辣的鲁迅种子
当前离线
积分
0
不爱听辣妹子辣的鲁迅种子
0
主题
3
帖子
0
积分
新手上路
新手上路, 积分 0, 距离下一级还需 50 积分
新手上路, 积分 0, 距离下一级还需 50 积分
积分
0
发消息
发表于 2023-4-9 18:51:19
|
显示全部楼层
能不能爬出百度搜索页后的结果,然后模拟点击动作,再进一步下载里面的文章呢
回复
使用道具
举报
严昌飞
当前离线
积分
7
严昌飞
1
主题
4
帖子
7
积分
新手上路
新手上路, 积分 7, 距离下一级还需 43 积分
新手上路, 积分 7, 距离下一级还需 43 积分
积分
7
发消息
发表于 2023-4-9 18:52:03
|
显示全部楼层
如何大量抓取关键词搜索结果叻?目前上线一个月更新二次请求参数了。还是被反爬了。一次参数更新起效14天左右。
回复
使用道具
举报
丁路豹
当前离线
积分
4
丁路豹
0
主题
3
帖子
4
积分
新手上路
新手上路, 积分 4, 距离下一级还需 46 积分
新手上路, 积分 4, 距离下一级还需 46 积分
积分
4
发消息
发表于 2023-4-9 18:52:39
|
显示全部楼层
遇到同样问题,想问大佬,最后解决了吗?
回复
使用道具
举报
阿酒
当前离线
积分
11
阿酒
3
主题
6
帖子
11
积分
新手上路
新手上路, 积分 11, 距离下一级还需 39 积分
新手上路, 积分 11, 距离下一级还需 39 积分
积分
11
发消息
发表于 2023-4-9 18:53:11
|
显示全部楼层
解决了。 动态UA、 动态Cookie、降低抓取频率、频次。
回复
使用道具
举报
下一页 »
1
2
/ 2 页
下一页
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
快速回复
返回顶部
返回列表