详解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第三方库的安装方法总结
Jun 06 Python
python getopt详解及简单实例
Dec 30 Python
python利用拉链法实现字典方法示例
Mar 25 Python
Python实现的字典值比较功能示例
Jan 08 Python
python中format()函数的简单使用教程
Mar 14 Python
python json.loads兼容单引号数据的方法
Dec 19 Python
python实现简单图片物体标注工具
Mar 18 Python
tensorflow2.0保存和恢复模型3种方法
Feb 03 Python
Python中itertools的用法详解
Feb 07 Python
浅谈python 调用open()打开文件时路径出错的原因
Jun 05 Python
Python读写压缩文件的方法
Jul 30 Python
Anaconda配置各版本Pytorch的实现
Aug 07 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
php下安装配置fckeditor编辑器的方法
2011/03/02 PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
2013/04/22 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
2015/07/10 PHP
php实现在线通讯录功能(附源码)
2016/05/13 PHP
jquery 弹出层实现代码
2009/10/30 Javascript
style、 currentStyle、 runtimeStyle区别分析
2010/08/01 Javascript
不使用XMLHttpRequest实现异步加载 Iframe和script
2012/10/29 Javascript
struts2+jquery+json实现异步加载数据(自写)
2013/06/24 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
2015/08/26 Javascript
JAVA Web实时消息后台服务器推送技术---GoEasy
2016/11/04 Javascript
jquery实现表单获取短信验证码代码
2017/03/13 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
JavaScript简单实现合并两个Json对象的方法示例
2017/10/16 Javascript
vue 表单输入格式化中文输入法异常问题
2018/05/30 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
JavaScript内置对象math,global功能与用法实例分析
2019/06/10 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
p5.js实现简单货车运动动画
2019/10/23 Javascript
利用Python如何生成hash值示例详解
2017/12/20 Python
python 读取目录下csv文件并绘制曲线v111的方法
2018/07/06 Python
Python3.5文件读与写操作经典实例详解
2019/05/01 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
2019/07/31 Python
python多进程并行代码实例
2019/09/30 Python
Django Form常用功能及代码示例
2020/10/13 Python
如何一键升级Python所有包
2020/11/05 Python
python自动化办公操作PPT的实现
2021/02/05 Python
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
大学生创业项目方案
2014/03/08 职场文书
我爱我家教学反思
2014/05/01 职场文书
财务负责人任命书
2014/06/06 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
2015年乡镇财政工作总结
2015/05/19 职场文书
亮剑观后感
2015/06/05 职场文书