详解Python爬虫爬取博客园问题列表所有的问题
作者:Winqihe 发布时间:2021-02-15 02:01:46
标签: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+'页爬取成功!')
四.运行结果
运行代码:
来源:https://blog.csdn.net/weixin_45462732/article/details/112682565


猜你喜欢
- Git修改已提交的commit注释两种情况:修改最后一次注释1、在命令行输入如下命令,然后回车:git commit --amend2、在命
- 本文实例讲述了python基于BeautifulSoup实现抓取网页指定内容的方法。分享给大家供大家参考。具体实现方法如下:# _*_ co
- Seaborn - 绘制多标签的混淆矩阵、召回、精准、F1导入seaborn\matplotlib\scipy\sklearn等包:impo
- 本文实例讲述了php实现的验证码文件类。分享给大家供大家参考。具体如下:<?php/*** @file* @version 1.0*
- 1. 复制表结构及其数据:create table table_name_new as select * from table_name_o
- Python中的中文是个很头痛的问题,Python2和Python3都会出现,而且py2中出现的概率要大些。 有一道面试题: Py
- scikit-learn是python的第三方机器学习库,里面集成了大量机器学习的常用方法。例如:贝叶斯,svm,knn等。scikit-l
- 本文实例讲述了php+mysql删除指定编号员工信息的方法。分享给大家供大家参考。具体分析如下:利用php提交员工编号给mysql,然后由m
- 在pandas 基础操作大全之数据读取&清洗&分析 以及 pandas基础操作大全之数据合并 中介绍了p
- Java读取数据库表package com.easycrud.builder;import com.easycrud.utils.Prope
- 安全性问题一直DBA是比较关心的问题,因为建立数据库的目的就是让相关的的客户端来进行访问,所以很难避免不出现安全隐患,例如客户端链接的权限、
- 权限全局配置:REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES':
- 在程序中,有多种方法进行强制类型转换。本博文将介绍一个非常常用的方法:to()方法。我们通常使用它来进行GPU和CPU的类型转换,但其实也可
- 本文实例讲述了php延迟静态绑定的方法。分享给大家供大家参考。具体分析如下:php延迟静态绑定:指类的self,不是以定义时为准,而是以计算
- 发现问题最近在将mysql升级到mysql 5.7后,进行一些group by 查询时,比如下面的SELECT *, count(id) a
- 现在,ORM框架、Web框架和配置都已就绪,我们可以开始编写一个最简单的MVC,把它们全部启动起来。通过Web框架的@decorator和O
- 本文实例讲述了Python实现繁體转为简体的方法。分享给大家供大家参考,具体如下:这里需要用到两个文件,可以点击此处本站下载源文件:zh_w
- 在介绍Python的self用法之前,先来介绍下Python中的类和实例……我们知道,面向对象最
- 文本特征提取作用:对文本数据进行特征化(句子、短语、单词、字母)一般选用单词作为特征值方法一:CountVectorizersklearn.
- 一、BN(Batch Normalization)算法1. 对数据进行归一化处理的重要性神经网络学习过程的本质就是学习数据分布,在训练数据与