提示:以下是本篇文章正文内容,下面案例可供参考
链接:https://blog.csdn.net/m0_67401761/article/details/126040358
*BeautifulSoup简称: bs4 。BeautifulSoup,和lxml一样,是一个html的解析器,主要功能也是解析和提取数据,通俗的讲bs4库把html源代码重新进行了格式化,从而方便我们对其中的节点、标签、属性等进行操作。
python+selenium结合来实现爬虫十分巧妙。由于是模拟人的点击来操作,所以被反爬的概率将大大降低。该技术也可以和其它技术结合如正则表达式,bs4,request,ip池等。然由于在获取页面的过程中会发送很多请求,所以效率较低,爬取速度会相对慢,建议用于小规模数据爬取。
官方介绍链接: https://www.sqlalchemy.org/
pymongo模块是python操作mongo数据的第三方模块,
conn = MongoClient(‘数据库所在地址’, 端口号) # 表示连接数据库服务器,并创建相应的对象,其中端口号必须是数字。
db_name = conn.tech_stargate # 表示创建想要连接数据库的对象。tech_stargate是想要连接的数据库名
db_name.authenticate(“数据库账号”, “数据库密码”) # 表示连接该数据库。
user = db_name.userModel # 表示创建想要操作的数据库表的对象。
基本操作:
链接:https://segmentfault.com/a/1190000013178839
首先导入必要的库和函数,其次输入对应的,mysql数据库相关的账户密码端口,创建的数据库名,表名;再用request发起访问,回馈后利用bs4处理下载的html,整理出想要的结构与内容,最后导入数据库。
首先导入必要的库和函数,其次输入对应的,mongodb数据库相关的账户密码端口,创建的数据库名,表名,再用request发起访问,回馈后利用bs4处理下载的html,整理出想要的结构与内容,最后导入数据库。
+新建项目 (scrapy startproject xxx): 新建一个新的爬虫项目
+明确目标 (编写items.py): 明确想要抓取的目标
+制作爬虫 (spiders文件夹下/news.py): 制作爬虫爬取网页
+存储内容 (pipelines.py): 设计管道来存储爬取内容
新建文件夹,右键打开选项命令行
输入pip isntall scrapy==2.6.1
版本尽可能一致;
在命令行中输入scrapy startproject NewsData
# 意思是创建一个叫NewsData的新的scrapy框架
框架文件夹在pycharm中打开;
前期准备完成。
以上内容为各种配置操作,如需要一键式的配置代码移步至:
https://github.com/amoyiki/LearnedAndProTest/tree/
配置主要的蜘蛛程序:在文件夹spider下创建新的蜘蛛程序:news
导入必要的库和函数
创建url队列,在这里需要提前处理好,否则后面的数据处理非常复杂,所以将url和其他数据写成列表的形式,使用excel和notpad,观察网页结构,最后得到列表。
网页list分析:右键检查网页,得到网页中导航栏的HTML结构,复制元素
notepad++处理:使用插件(tidy2)需要自行下载安装,也可以不用,只是为了excel方便处理
Excel处理url-list:,写成列表格式,[0]为url,[1]为网站名,[2]为网站内各站点
得到url队列:
Spider(news.py)发送请求url
引擎将url传给调度器,调度器request请求排序入队,request返回结果再传给引擎,使用yield返回结果,参数一定要严格按照下面来写。
引擎将返回结果给下载器,下载器按照“下载中间件”的设置,下载request请求
这个下载中间件设置在middlewa这个py文件中
下载好后传给引擎。(如果失败,引擎告诉调度器,request下载失败,记录后跳过该request继续执行后面的下载任务
引擎将下载好的对象传给Spider文件(我的是news.py),response默认交给def parse()函数处理,最后spider文件会把下载下来的对象按照如下要求变成item数据,并且返回一个新的url请求,给引擎,即将回到第一步
引擎处理刚才spider发来的请求,然后向调度器发送url相应的request请求进入循环,直到调度器中不存在任何request,重新下载刚才没成功网页后结束整个爬虫。
如果想要更精彩的案例详情请移步:https://segmentfault.com/
最大的收获,我认为便是“自信”,一种可视化的自信。或许一个学期没能见到老师尊容,是我这个学期最大的遗憾吧,杨老师讲课,很有趣,它更像是比我大两三届的学长,在社会中摸爬滚打,回到校园将知识和经验传授予我们。很优秀,也很耐心。学习完爬虫这门课,当我在一次次bug面前绞尽脑汁的搜索和理解,百度,csdn,博客,掘金哈哈哈哈一大堆能查的查完之后我体会到了注释和平时知识积累的意义;当因为权限问题,环境问题,配置问题卸载掉各种软件从头再来时,我感觉到了无比的绝望深刻体会到了严谨的操作和记录是多么重要;当看着眼前cmd运行顺畅的爬虫时,彷佛昨日狼狈的样子过眼云烟,欢快的心绪策马奔腾;很不舍,这门课只有一个学期的课时,如果可以更久,我或许比过去和现在更加自信和从容。
具体学到什么,我想我最骄傲的便是成功的爬取了京东的评论,爬取了每一页有不同结构的科技网,很多结构类似的作文网。虽然前期经历了一次一次的bug,自己不断查找原因,询问老师,过程中也是意外的掌握了浏览器中一个查找xpath好用的拓展插件。最成功的应用便在R语言的结课论文中,我选取了分析京东评论这一方向,需要获取大量的原始评论文本。在爬取京东时不断地查找资料,观看B站额外掌握了一门新的框架技术—selenium,最终也是成功爬取到了八千余条某店铺评论数据。和scrapy不同,scrapy是在客户端的内存解析,只是在内存中的html文档上运行xpath,不需要展开具体的某一网页;selenium是类似于手指触控模拟器一样,帮你去点击操作浏览器,过程中一定会有模仿人行为的操作,因此可以避开很多反爬。可参考链接:三大主流特色
反复打磨,从只会拼凑scrapy,到回归一次一次经验,结合最开始的scrapy流程,清晰的掌握了scrapy各个部分的原理和流程,便令我心旷神怡。本来打算这个收获准备用chatgpt划划水,但想着,这么有意义的事情,怎么能交给冰冷的AI呢。