通用解决方案:python爬虫基础之简易网页搜集器
优采云 发布时间: 2022-10-04 09:13通用解决方案:python爬虫基础之简易网页搜集器
简单的网络爬虫我们之前学习了一个简单的爬虫,它可以爬取浏览器页面。但其实,我们的需求当然不是爬搜狗首页或者B站首页那么简单的,不管多差,我们都希望能爬到具体的有信息的页面。
简单的网络爬虫
之前我们已经学习了如何简单地抓取浏览器页面。但其实,我们的需求当然不是爬搜狗首页或者B站首页那么简单的,不管多差,我们都希望能爬到具体的有信息的页面。
不知道学完爬虫后,有没有像我一样尝试爬过一些搜索页面,比如百度。像这样的页面
注意我被红色描边的部分,这是我正在打开的网页。现在我希望爬取这个页面的数据。根据我们之前学习的代码,应该是这样写的:
<p>import requests
if __name__ == "__main__":
# 指定URL
url = "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=2&tn=93923645_hao_pg&wd=%E5%A5%A5%E7%89%B9%E6%9B%BC&rsv_spt=1&oq=%25E7%2588%25AC%25E5%258F%2596%25E7%2599%25BE%25E5%25BA%25A6%25E9%25A6%2596%25E9%25A1%25B5&rsv_pq=b233dcfd0002d2d8&rsv_t=ccdbEuqbJfqtjnkFvevj%2BfxQ0Sj2UP88ixXHTNUNsmTa9yWEWTUEgxTta9r%2Fj3mXxDs%2BT1SU&rqlang=cn&rsv_dl=tb&rsv_enter=1&rsv_sug3=8&rsv_sug1=5&rsv_sug7=100&rsv_sug2=0&rsv_btype=t&inputT=1424&rsv_sug4=1424"
# 发送请求
response = requests.get(url)
# 获取数据
page_text = response.text
# 存储
with open("./奥特曼.html", "w", encoding = "utf-8") as fp:
fp.write(page_text)
print("爬取成功!!!")</p>
然而,当我们打开我们保存的文件时,发现结果并不是我们想的那样。
我们发现我们保存的文件是一个空白页,这是为什么呢?
其实把网址改成搜狗可能更直观(不知道为什么我这边的搜狗总是打不开,所以我以百度为例,关于搜狗搜索的代码大家可以自己写) ,同样的代码改成搜狗的网址的结果是这样的
我们发现有一句话“网络中有异常访问”,那么这句话是什么意思呢?
这句话的意思是搜狗或者百度注意到发送请求的是爬虫程序,而不是人为操作。
那么这样做的理由是什么?
简单来说,程序访问和我们的浏览器访问是有区别的。请求的服务器依靠用户代理来确定访问者的身份。如果是浏览器,就会接受请求,否则会被拒绝。这是一种很常见的防爬机制。
我们无能为力吗?
不~ 所谓魔是一尺高,道是一丈高。既然我们要识别user-agent,就让爬虫模拟user-agent。
在python中模拟输入数据或用户代理,我们一般使用字典
就这样写吧:
<p>header = {
"user-agent": "" # user-agent 的值 是一个长字符串
}</p>
那么如何获取 user-agent 的价值呢?
1.打开任意网页,右击,选择“检查”
2.选择“网络”(谷歌浏览器)(如果是中文,选择“网络”)
3.如果发现点击是空白的,像这样,刷新页面
刷新后是这样的:
然后随机选择红笔圈出来的item,我们会看到这样的东西,然后在里面找到“user-agent”,复制它的值。
使用“用户代理”,我们正在重写我们的网页爬取代码,就是这样
<p>import requests
if __name__ == "__main__":
# 指定URL
url = "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=2&tn=93923645_hao_pg&wd=%E5%A5%A5%E7%89%B9%E6%9B%BC&rsv_spt=1&oq=%25E7%2588%25AC%25E5%258F%2596%25E7%2599%25BE%25E5%25BA%25A6%25E9%25A6%2596%25E9%25A1%25B5&rsv_pq=b233dcfd0002d2d8&rsv_t=ccdbEuqbJfqtjnkFvevj%2BfxQ0Sj2UP88ixXHTNUNsmTa9yWEWTUEgxTta9r%2Fj3mXxDs%2BT1SU&rqlang=cn&rsv_dl=tb&rsv_enter=1&rsv_sug3=8&rsv_sug1=5&rsv_sug7=100&rsv_sug2=0&rsv_btype=t&inputT=1424&rsv_sug4=1424"
# 模拟 “user-agent”,即 UA伪装
header = {
"user-agent" : "" # 复制的 user-agent 的值
}
# 发送请求
response = requests.get(url, headers = header)
# 获取数据
page_text = response.text
# 存储
with open("./奥特曼(UA伪装).html", "w", encoding = "utf-8") as fp:
fp.write(page_text)
print("爬取成功!!!")</p>
再次运行,然后打开文件
这次成功了,说明我们的爬虫程序完美的欺骗了服务器
至此,这篇关于基于python爬虫的简单网页采集器的文章文章就介绍到这里了。
在下方搜索并添加老师微信
核心方法:DEDE采集功能的使用 DEDE采集规则的导入与导出的方法
我们都知道DEDEcms开发的默认系统后台自带采集功能。本教程演示如何使用 DEDE采集 函数。
采集 的定义:
程序根据指定规则有针对性地获取其他网站数据的一种方式。
网络采集是一个工具,用来批量处理采集网页、论坛等,直接保存到数据库或者发布到网站,是一个从中提取一些数据的工具目标网页 形成统一的本地数据库的过程。该数据仅以文本形式存在于可见网页中。这个过程需要的不仅仅是网络爬虫和网络包装器。复杂的数据提取过程必须处理会话识别、HTML 表单、客户端 JavaScript 等障碍,以及数据集和词集之间的不一致以及数据缺失和冲突等数据集成问题。根据用户设置的规则,自动采集原创网页获取格式网页中需要的内容。
详细请参考百度百科采集定义:
回到正题:DEDE采集规则的导入方法 Dede tutorial-598080707.NET
1、登录DEDE后台,打开采集栏,点击导入采集规则,如图:
2、找到已有的DEDE采集规则,粘贴到上图中的方框中,(请复制粘贴完整的规则,不要漏掉一个字符),粘贴后点击确定。我以这条规则为例: ,如下图:
(如果您不知道如何编写采集规则,请直接在本站找到您想要的采集内容的采集规则并粘贴)
DEDE采集规则:%B2%C9%BC%AF%B9%E6%D4%F2/
以上是采集规则的导入方式。很简单的两步,最容易出错的部分就是缺少规则的字母,导致采集规则不完整,报错。
3、导入采集规则后,我们将进行采集操作,点击采集节点管理,点击采集自动采集模式。如图所示:
4、采集中的演示图:(注意这里采集的速度取决于你的采集规则的采集的内容,请不要在中关闭浏览器中间,让它自动完成采集)
5、采集完成后,注意右上角有一个导出数据。我们点击Export Data,然后将采集的内容数据导出,并自动生成一个页面,如图:(注:这一步是采集完成后的数据导出和文档生成)
6、点击确定后,会自动开始导出采集好的数据。这一步完成后,你的采集的内容会出现在网站栏。
至此,采集内容的教程基本完成。如果你想把采集规则分享给你的朋友,那么请看下面的操作:如何导出DEDE采集规则
点击采集节点管理,点击导出配置,如图:dede blog-598080707.NET
点击导出配置,如下图:
然后将上面的字符串代码原封不动地复制给你的朋友。
发表信息:DEDE技术吧 | 分类: Dede 教程 | 本文地址: