详解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 Socket编程详细介绍
Mar 23 Python
python脚本监控Tomcat服务器的方法
Jul 06 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
Aug 13 Python
tensorflow模型继续训练 fineturn实例
Jan 21 Python
Python for循环通过序列索引迭代过程解析
Feb 07 Python
Python图像处理库PIL的ImageFont模块使用介绍
Feb 26 Python
基于Python词云分析政府工作报告关键词
Jun 02 Python
python + selenium 刷B站播放量的实例代码
Jun 12 Python
Python迭代器协议及for循环工作机制详解
Jul 14 Python
python实现定时发送邮件
Dec 23 Python
基于Python实现一个春节倒计时脚本
Jan 22 Python
Python进程池与进程锁之语法学习
Apr 11 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
DC动漫人物排行
2020/03/03 欧美动漫
教你IIS6的PHP最佳配置方法
2006/09/05 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
PHP7 foreach() 函数修改
2021/03/09 PHP
二叉树的非递归后序遍历算法实例详解
2014/02/07 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
js仿搜狐视频记录片列表展示效果
2020/05/30 Javascript
浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题
2017/09/02 Javascript
Bootstrap Table 删除和批量删除
2017/09/22 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
vue debug 二种方法
2018/09/16 Javascript
js实现弹出框的拖拽效果实例代码详解
2019/04/16 Javascript
nodejs实现UDP组播示例方法
2019/11/04 NodeJs
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
2020/03/23 Javascript
Python自动化开发学习之三级菜单制作
2017/07/14 Python
从CentOS安装完成到生成词云python的实例
2017/12/01 Python
python指定写入文件时的编码格式方法
2018/06/07 Python
Python subprocess模块功能与常见用法实例详解
2018/06/28 Python
Python异常处理知识点总结
2019/02/18 Python
django的auth认证,authenticate和装饰器功能详解
2019/07/25 Python
python定义类self用法实例解析
2020/01/22 Python
Mac中PyCharm配置Anaconda环境的方法
2020/03/04 Python
pandas读取csv文件提示不存在的解决方法及原因分析
2020/04/21 Python
Pycharm中配置远程Docker运行环境的教程图解
2020/06/11 Python
Python Django中间件使用原理及流程分析
2020/06/13 Python
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
苹果Mac升级:MacSales.com
2017/11/20 全球购物
终止劳动合同协议书
2014/04/14 职场文书
党员教师一句话承诺
2014/05/30 职场文书
简单通用的简历自我评价
2014/09/21 职场文书
领导班子四风问题个人对照检查材料
2014/10/04 职场文书
html form表单基础入门案例讲解
2021/07/15 HTML / CSS
Python实现简单的俄罗斯方块游戏
2021/09/25 Python
React自定义hook的方法
2022/06/25 Javascript