详解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判断变量是否已经定义的方法
Aug 18 Python
使用Python编写爬虫的基本模块及框架使用指南
Jan 20 Python
图文详解WinPE下安装Python
May 17 Python
详解如何用OpenCV + Python 实现人脸识别
Oct 20 Python
python爬取哈尔滨天气信息
Jul 14 Python
windows下python 3.6.4安装配置图文教程
Aug 21 Python
Python Selenium 之关闭窗口close与quit的方法
Feb 13 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
May 22 Python
python os.rename实例用法详解
Dec 06 Python
Pytorch模型迁移和迁移学习,导入部分模型参数的操作
Mar 03 Python
Appium中scroll和drag_and_drop根据元素位置滑动
Feb 15 Python
Pyhton爬虫知识之正则表达式详解
Apr 01 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
Breeze 文章管理系统 v1.0.0正式发布
2006/12/14 PHP
PHP中使用CURL伪造来路抓取页面或文件
2011/05/04 PHP
php结合正则获取字符串中数字
2015/06/19 PHP
php实现对象克隆的方法
2015/06/20 PHP
linux下php上传文件注意事项
2016/06/11 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
stripos函数知识点实例分享
2019/02/11 PHP
5秒后跳转到另一个页面的js代码
2013/10/12 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
2015/11/27 Javascript
深入浅析JavaScript中数据共享和数据传递
2016/04/25 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
输入法的回车与消息发送快捷键回车的冲突解决方法
2016/08/09 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
2016/12/26 Javascript
vue.js 初体验之Chrome 插件开发实录
2017/05/13 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
layer.confirm取消按钮绑定事件的方法
2018/08/17 Javascript
JS数组中对象去重操作示例
2019/06/04 Javascript
JS简单表单验证功能完整示例
2020/01/26 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
2020/06/19 Javascript
vue实现简易计算器功能
2021/01/20 Vue.js
python3.5 tkinter实现页面跳转
2018/01/30 Python
Php多进程实现代码
2018/05/07 Python
Python中的TCP socket写法示例
2018/05/11 Python
PyQt5使用QTimer实现电子时钟
2019/07/29 Python
Python字符串大小写转换拼接删除空白
2019/09/19 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
《孔子游春》教学反思
2014/02/25 职场文书
小学生教师节演讲稿
2014/09/03 职场文书
2014年大学生社会实践自我鉴定
2014/09/26 职场文书
2014幼儿园教育教学工作总结
2014/12/17 职场文书
2015年高中班级工作总结
2015/07/21 职场文书
初中思想品德教学反思
2016/02/24 职场文书
教你用Python写一个植物大战僵尸小游戏
2021/04/25 Python
Python线程池与GIL全局锁实现抽奖小案例
2022/04/13 Python