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

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


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

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

                    3.基于调用接口爬取排行榜单的爬虫方法并将爬取内容保存至csv文件【csdn_文章链接】基于调用接口爬取排行榜单的爬虫方法并将爬取内容保存至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.通过观察打印出来的标签内容,构造正则表达式,获取想要的内容。

<h2>
                        <a href="https://blog.csdn.net/u014534808/article/details/121297580" target="_blank" data-report-click='{"mod":"popu_459","extra":"{\"utm_medium\":\"distribute.pc_category.none-task-blog-hot-1.nonecase\",\"dist_request_id\":\"1636976746935_84791\"}","dist_request_id":"1636976746935_84791","ab_strategy":"default","index":"1","strategy":"hot","dest":"https:\/\/blog.csdn.net\/u014534808\/article\/details\/121297580"}' data-report-query='utm_medium=distribute.pc_category.none-task-blog-hot-1.nonecase&depth_1-utm_source=distribute.pc_category.none-task-blog-hot-1.nonecase' >
                                                        记一次性能优化的心酸历程【Flask+Gunicorn+pytorch+多进程+线程池,一顿操作猛如虎】                                                    </a>
                    </h2>

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

rebang_name=re.findall('<a href=.*?nonecase.*?>\n(.*?)</a>',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('<a href=.*?nonecase.*?>\n(.*?)</a>',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文件读取', '【渗透测试自学系列】&mdash;&mdash;邮件协议是如何被安全人员利用的?', '每日一算法(22)', '如何将照片或者视频中的背景图抠掉,机器学习开源项目使用|机器学习', '捋一捋Python中的List(下)', 'Pygame实战:风靡全球的经典泡泡龙小游戏来袭,你会喜欢嘛?(附源码)', 'pythonscrapy代理中间件,爬虫必掌握的内容之一', '海王必备,我用python写了一个微信机器人和她聊天之后把我拉黑了', 'PyCharm插件和配置', 'python中字典和列表的相互嵌套问题', '《JavaScript百炼成仙》统一回复粉丝们的一些问题', '2021年TI杯全国大学生电子设计大赛智能送药小车(F题)【本科组】(jetsonnano+yolov4-tiny+STM32F4识别数字)(已推国赛)', '【Python从入门到实战】一篇文章带你搞懂Python中的类~', '【机器学习】回归算法-精讲']

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


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

转载注明出处!

                                                   

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:博客之星2021 设计师:Hiro_C 返回首页

打赏作者

好学的小师弟

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值