详解Python爬虫爬取博客园问题列表所有的问题


Posted in Python onJanuary 18, 2021

一.准备工作

  • 首先,本文使用的技术为 python+requests+bs4,没有了解过可以先去了解一下。
  • 我们的需求是将博客园问题列表中的所有问题的题目爬取下来。

详解Python爬虫爬取博客园问题列表所有的问题 

二.分析:

  • 首先博客园问题列表页面右键点击检查
  • 通过Element查找问题所对应的属性或标签

详解Python爬虫爬取博客园问题列表所有的问题

可以发现在div class ="one_entity"中存在页面中分别对应每一个问题
接着div class ="news_item"中h2标签下是我们想要拿到的数据

三.代码实现

首先导入requests和BeautifulSoup

import requests
from bs4 import BeautifulSoup

由于很多网站定义了反爬策略,所以进行伪装一下

headers = {
    'User-Agent': 'Mozilla / 5.0(WindowsNT10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 87.0.4280.141Safari / 537.36'
  }

在这里User-Agent只是其中的一种方式,而且大家的User-Agent可能不同。

爬取数据main代码

url = 'https://q.cnblogs.com/list/unsolved?'
  fp = open('blog', 'w', encoding='utf-8')
  for page in range(1,26):
    page = str(page)
    param = {
      'page':page
    }
    page_text = requests.get(url=url,params=param,headers=headers).text
    page_soup = BeautifulSoup(page_text,'lxml')
    text_list = page_soup.select('.one_entity > .news_item > h2')
    for h2 in text_list:
      text = h2.a.string
      fp.write(text+'\n')
    print('第'+page+'页爬取成功!')

注意一下这里,由于我们需要的是多张页面的数据,所以在发送请求的url中我们就要针对不同的页面发送请求,https://q.cnblogs.com/list/unsolved?page=我们要做的是在发送请求的url时候,根据参数来填充页数page,
代码实现:

url = 'https://q.cnblogs.com/list/unsolved?'
  for page in range(1,26):
    page = str(page)
    param = {
      'page':page
    }
  page_text = requests.get(url=url,params=param,headers=headers).text

将所有的h2数组拿到,进行遍历,通过取出h2中a标签中的文本,并将每取出来的文本写入到文件中,由于要遍历多次,所以保存文件在上面的代码中。

text_list = page_soup.select('.one_entity > .news_item > h2')
    for h2 in text_list:
      text = h2.a.string
      fp.write(text+'\n')

完整代码如下:

import requests
from bs4 import BeautifulSoup
if __name__ == '__main__':
  headers = {
    'User-Agent': 'Mozilla / 5.0(WindowsNT10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 87.0.4280.141Safari / 537.36'
  }
  url = 'https://q.cnblogs.com/list/unsolved?'
  fp = open('blog', 'w', encoding='utf-8')
  for page in range(1,26):
    page = str(page)
    param = {
      'page':page
    }
    page_text = requests.get(url=url,params=param,headers=headers).text
    page_soup = BeautifulSoup(page_text,'lxml')
    text_list = page_soup.select('.one_entity > .news_item > h2')
    for h2 in text_list:
      text = h2.a.string
      fp.write(text+'\n')
    print('第'+page+'页爬取成功!')

四.运行结果

运行代码:

详解Python爬虫爬取博客园问题列表所有的问题

详解Python爬虫爬取博客园问题列表所有的问题

到此这篇关于详解Python爬虫爬取博客园问题列表所有的问题的文章就介绍到这了,更多相关Python爬虫爬取列表内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Python的Django框架中包装视图函数
Jul 20 Python
使用Scrapy爬取动态数据
Oct 21 Python
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
Feb 13 Python
Python+PyQt5实现美剧爬虫可视工具的方法
Apr 25 Python
PyQt4实时显示文本内容GUI的示例
Jun 14 Python
在python中利用try..except来代替if..else的用法
Dec 19 Python
python隐藏类中属性的3种实现方法
Dec 19 Python
opencv resize图片为正方形尺寸的实现方法
Dec 26 Python
浅谈python累加求和+奇偶数求和_break_continue
Feb 25 Python
python将字典内容写入json文件的实例代码
Aug 12 Python
使用py-spy解决scrapy卡死的问题方法
Sep 29 Python
Pyqt助手安装PyQt5帮助文档过程图解
Nov 20 Python
python爬虫爬取图片的简单代码
Jan 18 #Python
python中用Scrapy实现定时爬虫的实例讲解
Jan 18 #Python
java关于string最常出现的面试题整理
Jan 18 #Python
python爬虫实现爬取同一个网站的多页数据的实例讲解
Jan 18 #Python
python中四舍五入的正确打开方式
Jan 18 #Python
PyQt5中QSpinBox计数器的实现
Jan 18 #Python
全网最细 Python 格式化输出用法讲解(推荐)
Jan 18 #Python
You might like
一个odbc连mssql分页的类
2006/10/09 PHP
php在字符串中查找另一个字符串
2008/11/19 PHP
php 正则表达式小结
2009/08/31 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
Js nodeType 属性全面解析
2013/11/14 Javascript
js使用ajax读博客rss示例
2014/05/06 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
2016/12/14 Javascript
jQuery插件zTree实现删除树节点的方法示例
2017/03/08 Javascript
jQuery Validate 无法验证 chosen-select元素的解决方法
2017/05/17 jQuery
JS代码触发事件代码实例
2020/01/02 Javascript
解决vue自定义指令导致的内存泄漏问题
2020/08/04 Javascript
[01:00:54]TI4正赛第二日开场
2014/07/20 DOTA
[01:32]2016国际邀请赛中国区预选赛IG战队首日赛后采访
2016/06/27 DOTA
[01:13:59]LGD vs Mineski Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
python判断windows系统是32位还是64位的方法
2015/05/11 Python
在windows系统中实现python3安装lxml
2016/03/23 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
在Python中使用filter去除列表中值为假及空字符串的例子
2019/11/18 Python
Python能做什么
2020/06/02 Python
通过自学python能找到工作吗
2020/06/21 Python
Html5移动端弹幕动画实现示例代码
2018/08/27 HTML / CSS
英国Zoro工具:手动工具,电动工具和个人防护用品
2016/11/02 全球购物
德国大型和小型家用电器网上商店:Energeto
2019/05/15 全球购物
PHP如何调用MYSQL存储过程
2014/05/30 面试题
2015年质检工作总结
2015/05/04 职场文书
领导离职感言
2015/08/03 职场文书
新学期主题班会
2015/08/17 职场文书
2016幼儿园教师年度考核评语
2015/12/01 职场文书
九不准学习心得体会
2016/01/23 职场文书
60句有关成长的名言
2019/09/04 职场文书
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android
日元符号 ¥
2022/02/17 杂记