如何利用python写爬虫程序?

如何利用python写爬虫程序?,第1张

利用python写爬虫程序的方法:

1、先分析网站内容,红色部分即是网站文章内容div。

2、随便打开一个div来看,可以看到,蓝色部分除了一个文章标题以外没有什么有用的信息,而注意红色部分我勾画出的地方,可以知道,它是指向文章的地址的超链接,那么爬虫只要捕捉到这个地穗腔址就可以了。

3、接下来在一个问题就是翻页问题,可以看到,这和大多数网站不同,底部没有页数标签,而是查看更多。

4、不过在查看源文件时有一个超链接,经测试它指向下一页,那么通嫌裂过改变其最后的数值,就可以定位到相应的页数上芹族闭。

代码如下:

当前处于一个大数据的时代,一般网站数据来源有二:网站尺迟用户自身产生的数据和网站从其他来源获取的数据,今天要分享的是如何从其他网站获取你想要的数据。

目前最适合用于写爬虫的语言是python,python中最受欢迎的爬虫框架是scrapy,本文围绕scrapy来展开讲解爬虫是怎么工作的。

1.如下图所示,爬虫从编写的spider文件中的start_urls开始,这个列表中的url就是爬虫抓取的第一个网页,它的返回值是该url对应网页的源代码,我们可以用默认的parse(self,response)函数去打印或解析这个源代码

2.我们获取到源代码之后,就可以从网页源代码中找到我们想要的信息或需要进一步访问的url,提盯困旅取信息这一步,scrapy中集成了xpath,正则(re),功能十分强大,提取到信息之后会通过yield进入到中间件当中。

中间件包括爬虫中间件和下载中间件,爬虫中间件主要用于设置处理爬虫文件中的代码块,下载中间件主要用于判断爬虫进入网页前后的爬取状态,在此中间件中,你可以根据爬虫的返回状态去做进一步判断。

最后我们将yield过来的item,即就是我们想要的数据会在pipeline.py文件中进行处理,存入数据库,写凯凳入本地文件,都可以在这里进行,另外,为了减少代码冗余,建议所有与设置参数有关的参数,都写在settings.py中去

Python的爬虫库其实很多,像常见的urllib,requests,bs4,lxml等,初始入门爬虫的话,可以学习一下requests和bs4(BeautifulSoup)这2个库,比较简单,也易学习,requests用于请求页面,BeautifulSoup用于解析页面,下面我以这2个库为基础,简单介绍一下Python如何爬取网页静态数据和网页动态数据,实验环境win10+python3.6+pycharm5.0,主要内容如下:

Python爬取网页静态数据

这个就很简单,直接根据网址请求页面就行,这里以爬取糗事百科上的内容为例:

1.这里假设我们要爬取的文本内容如下,主要包括昵称、内容、好笑数和评论数这4个字段:

打开网页源码,对应网页结构如下,很简单,所有字段内容都可以直接找到:

2.针对以上网页结构,我们就可以编写相关代码来爬取网页数据了,很简单,先根据url地址,利用requests请求页面,然后再利用BeautifulSoup解析数据(根据标签和属性定位)就行,如下:

程序运行截图如下,已经成功爬取到数据:

Python爬取网页动态数据

很多种情况下,网页数据都是动态加载的,直接爬取网页是提取不到任何数据的,这时就需要抓包分析,找到动态加载的数据,一般情况下就是一个json文件(当然,也敬链誉可能是其他类型的文件,像xml等),然后请求解析这个json文件,就能获取到我们需要的数据,这里以爬取人人贷上面的散标数据为例:

1.这里假设我们爬取的数据如下,主要包括年亮段利率,借款标题,期限,金额,进度这5个字段:

2.按F12调出开发者工具,依次点击“Network”->“XHR”,F5刷新页面,就可以找到动态加载的json文件,具体信息如下:

3.接着,针对以上抓包分析,我们就可以编写相关代码来爬取数据了,基本思路和上面的静态网页差不多,先利用requests请求json,然后再利用python自带的json包解析数据就行,如下:

程序运行截图如下,已经成功获取到数据:

至此,我们就完成了利用python来爬取网页数据。总的来说,整个过程很简单,requests和BeautifulSoup对于初学者来说,非常容易学习,也易掌握,可以学习使用一下,后期熟悉后,可以学习一下scrapy爬虫框架,可以明显提高开发效率,非常不错,当然,网页中要是有加密、验证码等,这个就需要自己好好琢磨,研究对策了,网上也有相关教程和资料,感兴趣的话,可以搜一下,希望以上分唤陆享的内容能对你上有所帮助吧,也欢迎大家评论、留言。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12245745.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存