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

作者:Winqihe 时间:2021-02-15 02:01:46 

一.准备工作

  • 首先,本文使用的技术为 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爬虫爬取博客园问题列表所有的问题

来源:https://blog.csdn.net/weixin_45462732/article/details/112682565

标签:Python,爬虫,爬取,列表
0
投稿

猜你喜欢

  • 从 msxml6.dll 中获取 DOMDocument 对象的方法与属性

    2009-02-22 18:46:00
  • PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数

    2023-07-11 03:55:49
  • python2.7删除文件夹和删除文件代码实例

    2023-06-02 14:41:17
  • python mac下安装虚拟环境的图文教程

    2021-11-02 23:35:21
  • SQL Server 作业的备份(备份作业非备份数据库)

    2012-07-11 15:58:49
  • python中关于xmltodict的使用

    2022-11-04 03:03:46
  • Python 遍历循环详细

    2023-04-07 17:20:24
  • ACCESS如何打印窗体中当前显示的记录

    2008-11-20 16:31:00
  • Python matplotlib 动画绘制详情

    2022-04-12 14:36:52
  • 常用Oracle分析函数大全

    2023-07-03 08:16:14
  • Python命令启动Web服务器实例详解

    2022-10-09 11:53:42
  • python中Lambda表达式详解

    2021-12-06 22:40:26
  • 解决tensorflow添加ptb库的问题

    2022-05-28 07:44:02
  • 对Python 多线程统计所有csv文件的行数方法详解

    2021-09-09 04:56:44
  • 解决python对齐错误的方法

    2023-08-11 05:40:07
  • python实现扫描日志关键字的示例

    2023-10-20 15:44:02
  • 使用Python的Dataframe取两列时间值相差一年的所有行方法

    2023-11-11 06:50:25
  • Python 在字符串中加入变量的实例讲解

    2023-01-27 10:51:21
  • 解决运行出现'dict' object has no attribute 'has_key'问题

    2021-06-14 06:58:48
  • python单测框架之pytest常见用法

    2021-05-22 04:13:02
  • asp之家 网络编程 m.aspxhome.com