详解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 相关文章推荐
使用PyCharm配合部署Python的Django框架的配置纪实
Nov 19 Python
Linux中安装Python的交互式解释器IPython的教程
Jun 13 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
Jan 21 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
Apr 17 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
numpy数组广播的机制
Jul 12 Python
Django中使用session保持用户登陆连接的例子
Aug 06 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
Jan 08 Python
Python 从attribute到property详解
Mar 05 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
Mar 07 Python
使用keras实现Precise, Recall, F1-socre方式
Jun 15 Python
python 基于selenium实现鼠标拖拽功能
Dec 24 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
PHP5中MVC结构学习
2006/10/09 PHP
PHP回溯法解决0-1背包问题实例分析
2015/03/23 PHP
游戏人文件夹程序 ver 4.03
2006/07/14 Javascript
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
jQuery阻止冒泡和HTML默认操作
2010/11/17 Javascript
JQuery之拖拽插件实现代码
2011/04/14 Javascript
jQuery模拟点击A标记示例参考
2014/04/17 Javascript
JQuery中Bind()事件用法分析
2015/05/05 Javascript
jquery实现的Accordion折叠面板效果代码
2015/09/02 Javascript
利用jQuery和CSS将背景图片拉伸
2015/10/16 Javascript
jQuery插件实现无缝滚动特效
2015/11/24 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
mac中利用NVM管理不同node版本的方法详解
2017/11/08 Javascript
JS中数据结构之栈
2019/01/01 Javascript
js常用正则表达式集锦
2019/05/17 Javascript
微信小程序中网络请求缓存的解决方法
2019/12/29 Javascript
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
python3.3使用tkinter开发猜数字游戏示例
2014/03/14 Python
Python实现自动登录百度空间的方法
2017/06/10 Python
python实现画圆功能
2018/01/25 Python
Python星号*与**用法分析
2018/02/02 Python
flask session组件的使用示例
2018/12/25 Python
Python定义函数功能与用法实例详解
2019/04/08 Python
Python列表对象实现原理详解
2019/07/01 Python
python禁用键鼠与提权代码实例
2019/08/16 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
2020/07/13 Python
python开根号实例讲解
2020/08/30 Python
英国女士家居服网站:hush
2017/08/09 全球购物
美国知名的旅游网站:OneTravel
2018/10/09 全球购物
车辆维修工自我评价怎么写
2013/09/20 职场文书
中学生寄语大全
2014/04/03 职场文书
毕业寄语大全
2014/04/09 职场文书
社区先进事迹材料
2014/05/19 职场文书
交通事故赔偿协议书
2014/10/16 职场文书
党员身份证明材料
2015/06/19 职场文书
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技