
Python抓取博客记录,获取标题与url
网友投稿 879 2022-05-30
在博客网站发布了一些博客。总共有四十多篇。现在查看这些博客需要翻页,不是很方便。
想要弄出一个列表,把标题和链接展示出来。如果手动去复制粘贴,耗时耗力,也不够自动化。
有没有什么自动化的方法呢?想到以前用python做过抓取的功能。
开发环境:
Python3.7
PyCharm 2018.3.7 (Community Edition)
macOS 11.4
安装scrapy
我们主要使用的框架是scrapy,官网 https://scrapy.org/
如果需要换用清华的pip源,执行下面的命令
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
根据官网文档进行安装
pip3 install Scrapy
分析目标网页
目标网页的部分html如下
需要提取的是标题(title)和网址(url)。
shell工具
使用scrapy shell工具来分析一下目标网页
scrapy shell 'https://bbs.huaweicloud.com/community/usersnew/id_1606985929124732/page_1'
windows下的url需要用双引号
可以看到如下的运行结果
2021-10-13 09:46:47 [asyncio] DEBUG: Using selector: KqueueSelector [s] Available Scrapy objects: [s] scrapy scrapy module (contains scrapy.Request, scrapy.Selector, etc) [s] crawler
尝试用scrapy的css()方法来提取元素,操作它的response变量
例如提取div.blog-menu
In [2]: response.css('div.blog-menu') Out[2]: [
可以得到页面上所有满足要求的元素。拿到的元素是Selector,可以再进行下一步的操作。
用for循环读取提取到的元素,在此基础上,去抓取中文标题
In [6]: for item in response.css('div.blog-menu'): ...: print(item.css('a.common-blog-title::attr(title)').extract()[0]) ...: Kotlin协程取消与超时 Android Kotlin协程入门 Kotlin协程基础 Kotlin协程入门 Android View post 方法 Android Activity 传递Parcelable对象 Android Handler,Looper与MessageQueue使用与分析 Android线程池使用介绍 Java线程介绍 使用ECharts绘制网址径向树状图
a.common-blog-title::attr(title)表示的是我们要查找里面的内容,指定class为common-blog-title,并且查找title属性。
css().extract()将结果列表提取出来。最后得到我们关心的信息。
前面用shell工具进行分析,我们了解提取目标信息的方法。接下来写Python代码。
blog spiders .gitignore __init__.py __init__.py items.py middlewares.py pipelines.py settings.py
在spiders目录里新建一个文件Hw.py,它就是我们的“蜘蛛”。完整代码如下。
name是蜘蛛的名字。我们启动的时候会用到它。这个名字由我们自己定义。
res_list是暂存结果的列表。把获取到的结果暂时存放在里面。
用scrapy.Request(url=url, callback=self.parse)构建请求
请求成功后,结果保存在response中。前面用shell进行的操作,可以直接写成python代码。
推荐文章
最近发表
- 宠物集市-宠物集市华东、华南、华北排行榜一览表
- 京宠展-2025年时间表
- 宠物集市在深圳哪里有?时间地址最新消息
- 亚洲宠物展2025年展会介绍
- 京宠展信息指南
- 宠物展会2025年时间表
- 亚宠展、全球宠物产业风向标——亚洲宠物展览会深度解析
- 2025年亚洲宠物展览会、京宠展有哪些亮点
- wps演示添加自定义按钮设置动作改变按顺序播放" href="https://www.huoban.com/news/post/118206.html">wps演示添加自定义按钮设置动作改变按顺序播放
- WPS行中的文本调整到行中" href="https://www.huoban.com/news/post/119027.html">如何将WPS行中的文本调整到行中