详解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之大话题小函数(1)
Oct 10 Python
Python读取图片为16进制表示简单代码
Jan 19 Python
python之cv2与图像的载入、显示和保存实例
Dec 05 Python
Python实现爬取马云的微博功能示例
Feb 16 Python
ubuntu 16.04下python版本切换的方法
Jun 14 Python
Python列表删除元素del、pop()和remove()的区别小结
Sep 11 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
Dec 09 Python
Python3 shutil(高级文件操作模块)实例用法总结
Feb 19 Python
jupyter notebook 重装教程
Apr 16 Python
如何用python开发Zeroc Ice应用
Jan 29 Python
Python操作Excel的学习笔记
Feb 18 Python
总结Pyinstaller打包的高级用法
Jun 28 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解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
2013/11/14 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
jquery在IE、FF浏览器的差别详细探讨
2013/04/28 Javascript
js实现仿阿里巴巴城市选择框效果实例
2015/06/24 Javascript
JS实现上下左右对称的九九乘法表
2016/02/22 Javascript
AngularJS基础 ng-value 指令简单示例
2016/08/03 Javascript
canvas实现图像放大镜
2017/02/06 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
[jQuery] 事件和动画详解
2019/03/05 jQuery
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
2019/09/11 Javascript
vue路由传参三种基本方式详解
2019/12/09 Javascript
微信小程序button标签open-type属性原理解析
2020/01/21 Javascript
vue.js实现简单购物车功能
2020/05/30 Javascript
[05:53]完美世界携手游戏风云打造 卡尔工作室观战系统篇
2013/04/22 DOTA
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
Python编程之属性和方法实例详解
2015/05/19 Python
Python的GUI框架PySide的安装配置教程
2016/02/16 Python
Python中字符串的常见操作技巧总结
2016/07/28 Python
python绘制散点图并标记序号的方法
2018/12/11 Python
Python实现字典按key或者value进行排序操作示例【sorted】
2019/05/03 Python
Python学习笔记之Django创建第一个数据库模型的方法
2019/08/07 Python
python实现的生成word文档功能示例
2019/08/23 Python
python+mysql实现个人论文管理系统
2019/10/25 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
CSS3实现王者荣耀匹配人员加载页面的方法
2019/04/16 HTML / CSS
意大利单身交友网站:Meetic
2020/07/12 全球购物
init进程的作用
2015/08/20 面试题
期末考试动员演讲稿
2014/01/10 职场文书
11月升旗仪式讲话稿
2014/02/15 职场文书
高中学生干部学习的自我评价
2014/02/21 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
征兵宣传标语
2014/06/20 职场文书
开会迟到检讨书范文
2015/05/06 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书
JAVA长虹键法之建造者Builder模式实现
2022/04/10 Java/Android
Python采集壁纸并实现炫轮播
2022/04/30 Python