生活有时候就是太枯燥,而一板一眼的就更让人讨厌了~~~
眼看着自己喜欢的妹子和别人谈笑风生,被逗笑都来不及顾及女神形象,自己就像咬了一口柠檬,好酸~~~
作为一名程序员是不可能就这样认输的,晚上回去就滋遛滋遛的敲起代码,用Python抓取糗事百科24小时最热段子!
先附上代码!!!
# 糗事百科24小时最热段子抓取
> 今天我们来利用Python爬虫技术抓取糗事百科24小时最热段子
要获取腾讯招聘网站上的招聘信息,总共需要以下三步:
1. 准备工作:安装requests、lxml模块
2. 利用谷歌浏览器抓包、分析,确定url地址,以及确定数据位置
3. 完成代码
## 一. 准备工作
> 目标:安装requests、lxml模块
### 1. 在命令行终端输入 `pip install requests`后,等待下载安装完成
- requests模块能够帮助我们发送请求获取响应
### 2. 在命令行终端输入 `pip install lxml` 后,等待下载安装完成
- lxml可以用来对html页面的数据进行提取
## 二. 利用谷歌浏览器抓包
### 1. 确定url地址
> 首页url地址 https://www.qiushibaike.com/hot/
#### 1.1 进入首页后点击下一页,观察url地址变化

> 发现url地址按数字递增变化

#### 1.2 确定最后一页的url地址

#### 1.3 推测并验证首页的另外的url地址

#### 1.4 结论
> 糗事百科24小时最热段子一共13页,url地址从1到13递增`https://www.qiushibaike.com/hot/page/{}/ # 1-13`
### 2. 确定数据所在位置

- 每个段子都在id为content-left的div下子一级的div中
- 数据在该div中某个class为content的div下的第一个span标签中
### 3. 根据抓包确定代码逻辑
1. 构造url_list
2. 遍历url
1. 对每一个url发送请求获取响应
2. 提取数据
3. 保存数据
## 三. 完成代码
> 创建`qiushi_spider.py`文件,完成代码如下:
import requests
import datetime
from lxml import etree
class QiushiSpider():
def __init__(self):
self.url = 'https://www.qiushibaike.com/hot/page/{}/' # 1-13
def get_url_list(self):
# 1. 构造url_list
return [self.url.format(i) for i in range(1,14)]
def get_html(self, url):
# 2.1. 发送请求获取响应
resp = requests.get(url)
return resp.content # 返回html_bytes
def parse_html(self, html_bytes):
# 2.2. 提取数据
html = etree.HTML(html_bytes)
# 先分组,再提取
div_list = html.xpath('//div[@id="content-left"]/div')
item_list = [] # 保存一整页的数据
for div in div_list:
item = {}
item['content'] = div.xpath('.//div[@class="content"]/span[1]/text()')[0]
item_list.append(item)
return item_list
def save_item(self, item_list):
# 2.3. 保存数据
for item in item_list:
print(item)
def run(self):
# 组织运行爬虫逻辑
# 1. 构造url_list
url_list = self.get_url_list()
# print(url_list)
# 2. 遍历url
for url in url_list:
# 1. 发送请求获取响应
html_bytes = self.get_html(url)
# 2. 提取数据
item_list = self.parse_html(html_bytes)
# 3. 保存数据
self.save_item(item_list)
if name == 'main':
start = datetime.datetime.now()
spider = QiushiSpider()
spider.run()
end = datetime.datetime.now()
print('耗时:{}'.format(end-start))
##### 在`qiushi_spider.py`的同级路径下的终端中执行`python qiushi_spider.py`,运行代码后就可以获取段子数据

## 小结
> 至此,我们就可以获取糗事百科24小时最热段子了!
1. 利用谷歌浏览器抓包分析
1. 确定url的变化规律
2. 找到数据所在的位置
2. 完成代码
1. 构造url_list
2. 遍历url
1. 对每一个url发送请求获取响应
2. 提取数据
3. 保存数据
> @itcast @wj14k 版权所有
后面附上关键步骤截图:
1.png
2.png
3.png
4.png
5.png
使用后续
爬取成功后,背下来了几个准备大显身手,在大家聊天的时候(女神也在场),一说段子男同事都笑了,女神没有说话,看我的眼神有些复杂啊……好奇怪,从这以后女神看我就走!!!
原创,转载请联系学姐获取授权,未经允许不得转载
推荐阅读:
2018年新版Java学习路线图(内含大纲+视频+工具+书籍+面试)
2018年最新Python学习路线图(内含大纲+视频+工具)
2018版Go语言+区块链学习路线图(含大纲+视频+工具+资料)
2018新版前端与移动开发学习路线图(视频+工具+书籍+资源)
image













网友评论