详解Python爬虫爬取博客园问题列表所有的问题

 更新时间:2021年01月18日 14:40:48   作者:Winqihe  
这篇文章主要介绍了详解Python爬虫爬取博客园问题列表所有的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一.准备工作

  • 首先,本文使用的技术为 python+requests+bs4,没有了解过可以先去了解一下。
  • 我们的需求是将博客园问题列表中的所有问题的题目爬取下来。

在这里插入图片描述 

二.分析:

  • 首先博客园问题列表页面右键点击检查
  • 通过Element查找问题所对应的属性或标签

在这里插入图片描述

可以发现在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设置,更新和获取Excel单元格的值

    使用Python设置,更新和获取Excel单元格的值

    Excel工作簿作为一款广泛使用的数据管理工具,与Python相结合,可以使得自动化处理大量数据成为可能,本文将演示如何使用Python设置、更新以及获取Excel文件中单元格的值,希望对大家有所帮助
    2024-10-10
  • Python判断telnet通不通的实例

    Python判断telnet通不通的实例

    今天小编就为大家分享一篇Python判断telnet通不通的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 浅谈配置OpenCV3 + Python3的简易方法(macOS)

    浅谈配置OpenCV3 + Python3的简易方法(macOS)

    下面小编就为大家分享一篇浅谈配置OpenCV3 + Python3的简易方法(macOS),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Django对数据库进行添加与更新的例子

    Django对数据库进行添加与更新的例子

    今天小编就为大家分享一篇Django对数据库进行添加与更新的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python基于Faker假数据构造库

    Python基于Faker假数据构造库

    这篇文章主要介绍了Python基于Faker假数据构造库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • pytorch 模拟关系拟合——回归实例

    pytorch 模拟关系拟合——回归实例

    今天小编就为大家分享一篇pytorch 模拟关系拟合——回归实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • python实现不同文件夹下的函数相互调用

    python实现不同文件夹下的函数相互调用

    这篇文章主要介绍了python实现不同文件夹下的函数相互调用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Python+OpenCV实现相机标定的方法详解

    Python+OpenCV实现相机标定的方法详解

    opencv中内置了张正友的棋盘格标定法,通过一些姿态各异的棋盘格图像,可以标定相机的内外参数,本文为大家介绍OpenCV进行相机标定的具体方法,希望对大家有所帮助
    2023-05-05
  • Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】

    Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】

    这篇文章主要介绍了Python统计纯文本文件中英文单词出现个数的方法,结合实例形式总结分析了Python针对文本文件的读取,以及统计文本文件中英文单词个数的4种常用操作技巧,需要的朋友可以参考下
    2018-07-07
  • python GUI编程实现扫雷游戏

    python GUI编程实现扫雷游戏

    这篇文章主要为大家详细介绍了python GUI编程实现扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06

最新评论