【浅谈python爬虫1】基于正则表达式的基础爬虫——爬取排行榜榜单内容

【浅谈python爬虫1】基于正则表达式的基础爬虫——爬取排行榜榜单内容,第1张

【浅谈python爬虫1】基于正则表达式的基础爬虫——爬取排行榜榜单内容

大家好,我是好学的小师弟。今天来和大家分享下,我近期工作的一个学习心得——爬虫。虽然之前也有过爬虫的学习,但是那基本上都是基于图片的爬取。这次学习心得,算是一个小小的提升吧。


主要分3讲:1.基于正则表达式的爬虫——爬取排行榜榜单内容

                    2.基于lxml库的etree方法结合xpath方法——爬取排行榜榜单内容并生成榜单词云图

                    3.基于调用接口爬取排行榜单的爬虫方法并将爬取内容保存至csv文件


基于正则表达式的爬虫——爬取排行榜榜单内容

思路:将网站内容全部打印下来,分析标签之间的共同点,通过正则表达式提取标签内容,将每一块内容(例“标题”、“作者”)都单独写好,最后进行汇总

优点:思路简洁明了

缺点:实施起来比较麻烦(要是不麻烦,我应该也不会想其他方法了,笑哭)


步骤:1.输入想要爬取内容的网页网址,构建请求头,打印页面text内容

import requests
import re
#爬取csdn   python领域排行榜
csdn_python_url='https://blog.csdn.net/nav/python'
#构建请求头
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'}
python_yemian=requests.get(url=csdn_python_url,headers=headers)
python_yemian=python_yemian.text
#打印一下text内容
print(python_yemian)

2.通过观察打印出来的标签内容,构造正则表达式,获取想要的内容。

                        
                                                        记一次性能优化的心酸历程【Flask+Gunicorn+pytorch+多进程+线程池,一顿 *** 作猛如虎】                                                    
                    

这里我们想要的就是a标签的文本内容,所以我们构造了如下这个正则表达式

rebang_name=re.findall('n(.*?)',python_yemian)

"""
可以看到这里有个n换行符号,这是因为我们的标签内容里面也有换行,所以我们要和她一致


"""

因为打印出来的热榜文章标题是列表,所以我们要把他转变为字符串

注意:这里转变为字符串的时候,你会发现内容前后都有空格,所以我们可以用replace的方法,取消空格。

['                                                        记一次性能优化的心酸历程【Flask+Gunicorn+pytorch+多进程+线程池,一顿 *** 作猛如虎】                                                    ', '                                                        数据可视化之美 -- 以Matlab、Python为工具                                                    ']
#列表转变为字符串

rebang_text=','.join(rebang_name)
#通过replace将空格取消
rebang_text=rebang_text.replace(' ','')
#通过split函数再将字符串转变为字符串列表
rebang_text=rebang_text.split(',')
#打印
print(rebang_text)

完整代码:

import requests
import re

csdn_python_url='https://blog.csdn.net/nav/python'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'}
python_yemian=requests.get(url=csdn_python_url,headers=headers)
python_yemian=python_yemian.text
rebang_name=re.findall('n(.*?)',python_yemian)
print(python_yemian)
print(rebang_name)
rebang_text=','.join(rebang_name)
rebang_text=rebang_text.replace(' ','')
rebang_text=rebang_text.split(',')
print(rebang_text)

效果图:

['记一次性能优化的心酸历程【Flask+Gunicorn+pytorch+多进程+线程池,一顿 *** 作猛如虎】', '数据可视化之美--以Matlab、Python为工具', '【三万粉丝终极福利】Python、C、Java三大语言学习路线和资源整理', '我,27岁,程序员,10月无情被辞:想给学python的人提个醒......', '用python实现自动扫雷', '将python项目打包成exe和安装包', '秀的一批,那些你不得不知的Python杀手级框架', 'Python自动化必会技能-Excel文件读取', '【渗透测试自学系列】——邮件协议是如何被安全人员利用的?', '每日一算法(22)', '如何将照片或者视频中的背景图抠掉,机器学习开源项目使用|机器学习', '捋一捋Python中的List(下)', 'Pygame实战:风靡全球的经典泡泡龙小游戏来袭,你会喜欢嘛?(附源码)', 'pythonscrapy代理中间件,爬虫必掌握的内容之一', '海王必备,我用python写了一个微信机器人和她聊天之后把我拉黑了', 'PyCharm插件和配置', 'python中字典和列表的相互嵌套问题', '《Javascript百炼成仙》统一回复粉丝们的一些问题', '2021年TI杯全国大学生电子设计大赛智能送药小车(F题)【本科组】(jetsonnano+yolov4-tiny+STM32F4识别数字)(已推国赛)', '【Python从入门到实战】一篇文章带你搞懂Python中的类~', '【机器学习】回归算法-精讲']

这里我只写了一个爬取文章标题的正则表达式,后面我觉得比较麻烦就没有继续下去了。想着有没有其他方法可以爬取排行榜,后来用了第二种方法——etree和xpath


新人创作不易,觉得不错的看官,点个赞吧,么么哒!!!

转载注明出处!

                                                   

 

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

原文地址: https://outofmemory.cn/zaji/5495968.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存