为什么使用Python进行网络爬虫?Python网络爬虫的实用性与强大功能解析 白山关键词排名谁家正规
栏目:广告资讯 发布时间:2026-01-20
本文与大家分享一个网络爬虫的使用案例分析。小编觉得还是比较实用的,所以分享给大家,供大家参考。下面就跟随小编一起来看看吧。 1. 为什么要使用网络爬虫? 因为

本文与大家分享一个网络爬虫的使用案例分析。小编觉得还是比较实用的,所以分享给大家,供大家参考。下面就跟随小编一起来看看吧。

1. 为什么要使用网络爬虫?

因为语言非常简洁,易于使用和学习,所以写作就像用英语写作一样。另外,使用起来也非常方便。它不需要 IDE,而仅使用文本。可以开发大多数中小型应用;另外,爬虫框架非常强大。其框架可以抓取网络数据并提取结构数据。常用于数据挖掘、历史数据存储、信息处理等程序中;网络支持库和html解析器非常强大。借助网络支持库,只需编写较少的代码就可以下载网页,并通过网页解析库可以解析网页中的每个标签,并与正则表达式结合起来。

抓取网页内容非常方便。因此,它在网络爬行方面具有很大的优势。

2、判断网站数据是否支持抓取

几乎每个网站都有一个名为 .txt 的文档。当然,有些网站不设置.txt。如果网站没有设置.txt,则可以通过网络爬虫获取无密码加密的数据,即可以爬取该网站的所有页面数据。当然,如果网站有.txt文档,就要判断是否存在禁止访问者获取的数据。

以淘宝为例,在浏览器中访问,如图。

上图中淘宝上.txt文件的内容

淘宝允许某些爬虫访问其部分路径,但对于不允许的用户,则禁止所有爬行。代码如下:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="brush:js;toolbar:false;"><span>User-Agent:* Disallow:/ 12 </span></pre></p>

这段代码的含义是,除了前面指定的爬虫之外,其他爬虫不允许爬取任何数据。

3. 图书馆抓取网站数据

1.如何安装库

1.首先安装库

2.打开并单击“文件”菜单

3. 选择“新建...”命令

4. 选择“ ”(项目编译器)命令

5、确认当前选择的编译器,点击右上角的加号。

6、在搜索框中输入:(注意,一定要输入完整,否则很容易出错),然后点击左下角的“ ”(安装库)按钮。

安装完成后会显示“&#39;&#39;”(库请求已成功安装)。如果安装不成功,会出现提示信息。

4.爬虫的基本原理

网页请求的过程分为两个环节:

(请求):每个显示在用户面前的网页都必须经过这一步,即向服务器发送访问请求。

(响应):服务器收到用户的请求后,会验证请求的有效性,然后将响应内容发送给用户(客户端)。客户端接收服务器响应的内容并显示内容,这就是我们所熟悉的。网页请求

请求网页有两种方式:

GET:最常用的方法,一般用于获取或查询资源信息。也是大多数网站采用的方法,响应速度快。

POST:与GET方法相比,它具有以表单形式上传参数的功能,所以除了查询信息外,还可以修改信息。

因此,在编写爬虫之前,首先要确定将请求发送给谁以及如何发送。

5.使用GET方法抓取数据

复制首页任意第一条新闻的标题,在源页面按【Ctrl+F】调出搜索框,将标题粘贴到搜索框中,然后按【Enter】键。

标题可以在源码中搜索到,请求对象是,请求方法是GET(源码中所有数据请求方法都是GET),如图9所示。

确定请求对象和方法后,在中输入以下代码:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="brush:js;toolbar:false;"><span>import requests        #导入requests包 url = &#39;http://www.cntour.cn/&#39; strhtml = requests.get(url)        #Get方式获取网页数据 print(strhtml.text) 1234 </span></pre></p>

用于加载库的语句是+库的名称。上述过程中,加载库的语句为: 。

使用GET方法获取数据,需要调用库中的get方法。要使用它,请在其后面输入英文句点,如下所示:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="brush:js;toolbar:false;"><span>requests.get 1 </span></pre></p>

将获取到的数据存入变量中,代码如下:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="brush:js;toolbar:false;"><span>strhtml = request.get(url) 1 </span></pre></p>

这次是一个URL对象,它代表了整个网页,但此时只需要网页中的源代码。以下语句代表网页源代码:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="brush:js;toolbar:false">strhtml.text 1</pre></p>

6.使用POST方法抓取数据

首先输入有道翻译网址:进入有道翻译页面。

按快捷键F12进入开发者模式,点击。此时内容为空,如图:

在有道翻译中输入“我爱中国”,点击“翻译”按钮

在开发者模式下,点击“”按钮,然后点击“XHR”按钮即可查找翻译数据

点击发现请求数据的方法是POST。

找到数据在哪里以及如何请求数据后,开始编写爬虫程序。

首先,将 URL 复制进去并将其分配给 url。代码如下:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="brush:js;toolbar:false;"><span>url = &#39;http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&#39; 1 </span></pre></p>

POST请求获取数据的方式与GET不同。 POST 请求数据必须构造请求头。

Form Data中请求参数如图

复制它并建立一个新字典:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="brush:js;toolbar:false;"><span>From_data={&#39;i&#39;:&#39;我愛中國&#39;,&#39;from&#39;:&#39;zh-CHS&#39;,&#39;to&#39;:&#39;en&#39;,&#39;smartresult&#39;:&#39;dict&#39;,&#39;client&#39;:&#39;fanyideskweb&#39;,&#39;salt&#39;:&#39;15477056211258&#39;,&#39;sign&#39;:&#39;b3589f32c38bc9e3876a570b8a992604&#39;,&#39;ts&#39;:&#39;1547705621125&#39;,&#39;bv&#39;:&#39;b33a2f3f9d09bde064c9275bcb33d94e&#39;,&#39;doctype&#39;:&#39;json&#39;,&#39;version&#39;:&#39;2.1&#39;,&#39;keyfrom&#39;:&#39;fanyi.web&#39;,&#39;action&#39;:&#39;FY_BY_REALTIME&#39;,&#39;typoResult&#39;:&#39;false&#39;} 1 </span></pre></p>

将字符串格式数据转换为JSON格式数据,根据数据结构提取数据,并打印出翻译结果。代码如下:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="brush:js;toolbar:false;"><span>import json content = json.loads(response.text) print(content[&#39;translateResult&#39;][0][0][&#39;tgt&#39;]) 123 </span></pre></p>

使用.post方法抓取有道翻译结果的完整代码如下:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="brush:js;toolbar:false;"><span>import requests        #导入requests包 import json def get_translate_date(word=None):    url = &#39;http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&#39;    From_data={&#39;i&#39;:word,&#39;from&#39;:&#39;zh-CHS&#39;,&#39;to&#39;:&#39;en&#39;,&#39;smartresult&#39;:&#39;dict&#39;,&#39;client&#39;:&#39;fanyideskweb&#39;,&#39;salt&#39;:&#39;15477056211258&#39;,&#39;sign&#39;:&#39;b3589f32c38bc9e3876a570b8a992604&#39;,&#39;ts&#39;:&#39;1547705621125&#39;,&#39;bv&#39;:&#39;b33a2f3f9d09bde064c9275bcb33d94e&#39;,&#39;doctype&#39;:&#39;json&#39;,&#39;version&#39;:&#39;2.1&#39;,&#39;keyfrom&#39;:&#39;fanyi.web&#39;,&#39;action&#39;:&#39;FY_BY_REALTIME&#39;,&#39;typoResult&#39;:&#39;false&#39;}    #请求表单数据    response = requests.post(url,data=From_data)    #将Json格式字符串转字典    content = json.loads(response.text)    print(content)    #打印翻译后的数据    #print(content[&#39;translateResult&#39;][0][0][&#39;tgt&#39;]) if __name__==&#39;__main__&#39;:    get_translate_date(&#39;我爱中国&#39;) 1234567891011121314 </span></pre></p>

7. 使用Soup解析网页

网页的源代码已经可以通过库捕获。下一步是从源代码中查找并提取数据。 Soup是一个库,主要功能是从网页中爬取数据。 Soup已经移植到bs4库,这意味着导入Soup时需要先安装bs4库。

安装bs4库的方式如图:

安装bs4库后,还需要安装lxml库。如果我们不安装 lxml 库,将使用默认解析器。虽然Soup既支持标准库中的HTML解析器,也支持一些第三方解析器,但lxml库更强大、速度更快,因此作者建议安装lxml库。

安装第三方库后,输入以下代码即可开始Soup之旅:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="brush:js;toolbar:false;"><span>import requests        #导入requests包 from bs4 import    BeautifulSoup url=&#39;http://www.cntour.cn/&#39; strhtml=requests.get(url) soup=BeautifulSoup(strhtml.text,&#39;lxml&#39;) data = soup.select(&#39;#main>div>div.mtop.firstMod.clearfix>div.centerBox>ul.newsList>li>a&#39;) print(data) 1234567 </span></pre></p>

代码运行结果如图所示。

Soup库可以轻松解析网页信息。它集成在bs4库中,需要时可以从bs4库中调用。其表达式语句如下:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="brush:js;toolbar:false;"><span>from bs4 import BeautifulSoup 1 </span></pre></p>

首先,HTML文档将被转换为编码格式,然后Soup选择最合适的解析器来解析这个文档。这里指定lxml解析器进行解析。解析之后,复杂的HTML文档被转换成树形结构,每个节点都是一个对象。这里,解析后的文档存储在新创建的变量 soup 中。代码如下:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="brush:js;toolbar:false;"><span>soup=BeautifulSoup(strhtml.text,&#39;lxml&#39;) 1 </span></pre></p>

接下来,使用(选择器)来定位数据。定位数据时,需要使用浏览器的开发者模式。将鼠标光标置于相应的数据位置并单击右键,然后在快捷菜单中选择“检查”命令。

然后浏览器右侧会弹出开发者界面。右侧突出显示的代码(参见图 19(b))对应于左侧突出显示的数据文本(参见图 19(a))。右键单击右侧突出显示的数据,在弹出的快捷菜单中选择“复制”➔“复制”命令,即可自动复制路径。

使用以下代码将路径粘贴到文档中:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="brush:js;toolbar:false;"><span>#main > div > div.mtop.firstMod.clearfix > div.centerBox > ul.newsList > li:nth-child(1) > a 1 </span></pre></p>

由于该路径是第一个选择的路径,而且我们需要获取所有标题,所以删除li:nth-child(1)中冒号(包括冒号)后面的部分。代码如下:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="brush:js;toolbar:false;"><span>#main > div > div.mtop.firstMod.clearfix > div.centerBox > ul.newsList > li > a 1 </span></pre></p>

用汤。引用该路径,代码如下:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="brush:js;toolbar:false">data = soup.select(&#39;#main > div > div.mtop.firstMod.clearfix > div.centerBox > ul.newsList > li > a&#39;) 1</pre></p>

8. 清理和组织数据

至此,一段目标HTML代码已经获得,但数据还没有提取出来。接下来,在:纯文本复制中输入以下代码

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="brush:js;toolbar:false;"><span>for item in data:    result={        &#39;title&#39;:item.get_text(),        &#39;link&#39;:item.get(&#39;href&#39;)    } print(result) 123456 </span></pre></p>

代码运行结果如图:

首先,明确要提取的数据是标题和链接。标题位于 &lt;a&gt; 标记中。使用 () 方法提取标签的文本。该链接位于 &lt;a&gt; 标记的 href 属性中。要提取标签中的 href 属性,请使用 get() 方法。括号内指定要提取的属性数据,即get(&#39;href&#39;)。

从图 20 中可以看出,文章的链接中有一个数字 ID。下面使用正则表达式来提取此 ID。需要使用的正则符号如下: \d 匹配数字 + 匹配前一个字符1次或多次

re 库在调用正则表达式时使用。该库不需要安装,可以直接调用。在中输入以下代码:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="brush:js;toolbar:false;"><span>import re for item in data:    result={        "title":item.get_text(),        "link":item.get(&#39;href&#39;),        &#39;ID&#39;:re.findall(&#39;\d+&#39;,item.get(&#39;href&#39;))    } print(result) 12345678 </span></pre></p>

运行结果如图:

这里使用了re库的方法。第一个参数代表正则表达式,第二个参数代表要提取的文本。

9.爬虫攻击与防御

爬虫模拟人类浏览行为,批量抓取数据。当捕获的数据量逐渐增大时,会给访问的服务器带来很大的压力,甚至可能崩溃。换句话说,服务器不喜欢有人抓取自己的数据。然后,网站会针对这些爬虫采取一些反爬虫策略。

服务器识别爬虫的第一种方式是检查连接,识别是浏览器访问的还是代码访问的。如果是代码访问,当访问量增加时,服务器会直接屏蔽访问IP。

那么对于这种简陋的反爬虫机制我们应该采取什么措施呢?

我们以之前创建的爬虫为例。访问时我们不仅可以找到开发者环境中的URL和Form Data,还可以构造浏览器的请求头并自己封装。服务器识别浏览器访问的方式是判断是否是下面的User-Agent,如图:

因此,我们只需要构造这个请求头的参数即可。只需创建请求头信息即可,代码如下:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="brush:js;toolbar:false;"><span>headers={&#39;User-Agent&#39;:&#39;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36&#39;} response = request.get(url,headers=headers) 12 </span></pre></p>

说到这里,很多读者会觉得修改User-Agent太简单了。确实很简单,但是正常人一秒钟看一张图片,而爬虫一秒钟可以爬很多张图片,比如一秒钟上百张图片,那么服务器的压力必然会增大。也就是说,如果你在一个IP下批量访问、下载图片,这种行为就不符合人类的正常行为,这个IP肯定会被封。

原理也很简单。就是统计每个IP的访问频率。如果频率超过阈值,将返回验证码。如果确实是用户访问,则用户将其填写并继续访问。如果是代码访问,IP会被封。

这个问题有两种解决方案。第一个是添加一个常用的延迟,即每3秒捕获一次。代码如下:

<p style='margin-bottom:15px;color:#555555;font-size:15px;line-height:200%;text-indent:2em;'> <pre class="brush:js;toolbar:false;"><span>import time time.sleep(3) 12 </span></pre></p>

然而,我们编写爬虫的目的是为了批量高效地爬取数据。这里我们设置爬虫每3秒爬一次,效率太低了。其实还有一个更重要的解决办法,就是从本质上解决问题。

无论如何访问,服务器的目的都是找出哪些是通过代码访问的,然后封锁IP。解决方案:为了避免IP被封,数据采集时经常使用代理。当然,也有相应的属性。

感谢您的阅读!这里分享一下网络爬虫的使用案例分析。希望以上内容能够给大家带来一些帮助,让大家学到更多的知识。如果您觉得文章不错,可以分享出去,让更多的人看到!


# 镇江英文网站推广好不好  # 有两种  # 湖南质量好网站推广优化  # 山西营销推广排名  # 联盟网站建设费用  # 诸暨网站优化哪家效果好  # 上海网络营销推广工具  # wap版seo  # 关键词排名选择易速达  # 水城网络推广和营销  # 安徽网站建设实训总结  # 所示  # seo01亚洲视频  # 物联网平台推广及营销  # 营销方案跟推广方案  # 上海旅游推广网站大全最新  # 长春关键词排名推荐  # 固原农产品网站优化方案  # 内江网站推广专业报价  # 社区干部网站建设情况  # 网站百度优化推广公司  # 微商营销推广加好友  # 淘宝  # 为什么使用Python进行网络爬虫  # Python网络爬虫的实用性与强大功能解析  # 如图  # 文档  # 都是  # 第一个  # 源代码  # 是从  # 库中  # 是一个  # 为什么使用Python进行网络爬虫?Python网络爬虫的实用性与强大功能解析  # 单击  # 还可以  # 只需  # 右键  # 我爱  # 给大家  # 正则表达式  # 只需要  # 为例 


相关文章: 让您的项目快速实现,如何帮助您的项目快速实现,一些建议和 *** ,快速实现项目的建议与 *** ,掌握这些技巧  大连网站设计公司,助力企业打造专业、高效的在线形象,大连专业网站设计,塑造企业卓越在线品牌形象  江门网站优化,提升网站流量,助力企业腾飞,江门企业网站流量优化,助力业务腾飞新高度  天津网站 *** ,打造专业、高效的在线平台,天津专业高效网站定制服务,构建您的在线商务门户  廊坊网站优化,提升 *** 曝光,助力企业腾飞,廊坊企业 *** 曝光新篇章,网站优化助力腾飞  食药监总局抽检5类食品325批次,12批次不合格   抖音极速版:看视频赚钱超靠谱,还有超多精彩等你来   上海网站排名优化,提升网站流量,增强品牌影响力的关键策略,上海网站流量倍增与品牌影响力提升策略解析  新疆棉事件两年后,最大品牌输家曝光......  嘉定网站建设,助力企业数字化转型的创新引擎,嘉定企业数字化转型新动力,网站建设创新引擎  百度搜索结果SEO优化要点,品牌排名占位及核心理论全解析   Stellarium、Star Walk 2等天文及天气查询软件推荐,免费又实用   互联网成重要平台,网络空间治理与文明建设需全社会共筑   梅西代言白酒?被吐槽了?!  三亚网站建设,打造企业 *** 新形象,助力发展新篇章,三亚企业 *** 新形象塑造,专业网站建设助力发展新里程  网站推广外链,提升网站流量与搜索引擎排名的秘诀,揭秘网站流量与搜索引擎排名提升的SEO外链策略  长春网站设计,打造专业形象,助力企业腾飞,长春专业网站设计,塑造企业形象,助力企业飞跃  新品牌如何熟悉小红书核心逻辑?做好这几步很关键   快过年微信群活跃易卡死、炸群怎么办?这些原因要知道   石家庄做网站,专业团队助力企业打造高效 *** 平台,石家庄专业团队助力企业构建高效 *** 平台  微信成长史:从诞生到进化,如何一步步改变我们生活?   微信成社交之王!拉黑与删除好友有何区别及后果?   山东网站 *** ,打造企业 *** 品牌的新引擎,山东企业 *** 品牌重塑,网站 *** 新引擎驱动发展  微信朋友圈九宫格拼图教程来啦!爱心九宫格图片超好看   数字化浪潮下,如何挑选网站建设公司?2025榜单揭晓亮点   微信分身ios版:多开功能超实用,免费应用分身超火爆   湖南网站 *** ,助力企业打造高效 *** 营销平台,湖南专业网站 *** 服务,赋能企业高效 *** 营销  西安专业网站建设公司,助力企业互联网转型的得力助手,西安助力企业互联网转型的专业网站建设服务商  抖音人气爆棚捧红众多网红,想走红容易却也难?且看这位   日照网站建设,打造专业品牌形象,助力企业腾飞,专业品牌形象塑造,日照企业网站建设助力腾飞之路  *** 网站建设,提升公共服务水平,构建透明高效 *** ,数字化赋能,打造透明高效公共服务型 *** ,数字化赋能下的透明高效公共服务型 *** 建设, *** 网站新篇章  网站建设中图片的运用与优化,提升视觉效果与用户体验的关键策略,网站视觉优化,图片策略提升用户体验与视觉效果  大连做网站,打造个性化品牌形象,助力企业互联网发展,大连专业网站定制,塑造独特品牌形象,推动企业互联网进程,大连专业网站定制,塑造企业个性化品牌形象,助力互联网发展  网站建设与维护,打造成功企业的 *** 基石,企业 *** 基石,网站建设与维护之道  如今做微商的越来越多,微信号倒卖现象频发,注册多个微信号有妙招?   河南网站优化的重要性及策略探讨,河南网站优化的重要性与策略详解,河南网站优化的重要性与策略详解  潍坊网站优化,提升网站排名,助力企业互联网发展,潍坊企业网站优化,助力提升 *** 排名,推动互联网成长  洛阳网站建设,助力企业互联网转型升级,洛阳企业互联网转型新引擎,专业网站建设服务  忘记微信密码莫慌张!官方推荐这几种轻松找回账号的方法   3D建模师薪资受多因素影响,游戏建模新人入职薪资几何?   女生主动加微信背后的多重意涵及应对策略解析   连云港网站建设,打造个性化企业 *** 名片,助力本地企业腾飞,连云港企业 *** 名片定制服务,助力本地企业飞跃发展  广东广电网络24小时服务热线96956,业务范围全在这里   微信10年超12亿用户,全方位渗透生活,诞生于2011年1月21日   95 后女孩林媛实测!小红书底部菜单变市集,内测大揭秘?   广州建网站,打造企业数字化转型的强力引擎,广州企业数字化转型新引擎,建站赋能未来,广州企业数字化转型新引擎,建站赋能未来之路  深圳安居房申请条件全解析,这些要点你必须知道   百度网盘买了超级会员下载仍慢怎么办?这些解决方法请查收   “长在手上”的遥控器 如何承包牛奶盒子的亮点  上海网站优化公司,助力企业提升 *** 竞争力,上海专业网站优化服务,助企业抢占 *** 竞争制高点 


相关栏目: 【 广告资讯90366 】 【 广告推广18483 】 【 广告优化154267 】 【 广告营销46464