python爬虫运行无结果_详解Python爬虫爬取博客园问题列表所有的问题

一.准备工作

首先,本文使用的技术为 python+requests+bs4,没有了解过可以先去了解一下。

我们的需求是将博客园问题列表中的所有问题的题目爬取下来。

b45f9526db1be60ef115963b8702383a.png

二.分析:

首先博客园问题列表页面右键点击检查

通过Element查找问题所对应的属性或标签

b70389f14026d4c78d06f470d349860e.png

可以发现在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+'页爬取成功!')

四.运行结果

运行代码:

81bfc0812cecf9da1ed1747987b3e01a.png

cbf34910853fdabc073d62395fdceb73.png

到此这篇关于详解Python爬虫爬取博客园问题列表所有的问题的文章就介绍到这了,更多相关Python爬虫爬取列表内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

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

本文地址: http://www.cppcns.com/jiaoben/python/374204.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值