爬虫实战03--爬虫单线程
0.0说明:
这一个爬取的网站是糗事百科的页面去全部标题!最后是以打印的方式展现的!
这是第一篇文章,就是正常的爬取。一共是有三个版本,我一共会发三篇文章!
第一篇:本篇,正常爬取 糗事百科全部标题
第二篇:下篇,多线程的爬取糗事百科全部标题
第三篇:后篇,多进程的爬取糗事百科全部标题
01、运行环境+
# 操作系统:win10 专业版
pycharm professional 2019.1
python 3.8
lxml == 4.5.1
requests == 2.23.0
xpath == 2.0.2
02、开始爬虫
02-1、目标
糗事百科的页面全部标题!最后以打印的方式展现!
地址:
# 页面一共是1-13页
https://www.qiushibaike.com/8hr/page/1/
......
https://www.qiushibaike.com/8hr/page/13/
02-2、开始抓取内容
02-2-1、分析
图片中的数据就是我们需要获取的。用xpath这一个获取到了全部我们需要的!
对于url地址就是1----13这一个简单处理,其他都是简单的爬虫流程,不再赘述!具体看代码的注释吧!
再看一哈思路!
“”"
思路:
1.构建url地址
2.发送请求获取数据
3.从响应中提取数据
4.保存数据
“”"
我们直接写代码了!
03、完整代码(面向对象版)
import requests
from lxml import etree
"""
思路:
1.构建url地址
2.发送请求获取数据
3.从响应中提取数据
4.保存数据
"""
class Qiushi():
"""糗事百科单线程爬虫"""
def __init__(self):
# 初始化信息
# 构建请求头
self.headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36"
}
# 构建基础的url地址
self.baseutl= 'https://www.qiushibaike.com/8hr/page/{}/'
# 构建url地址
def get_utls(self):
"""
:return: 目标url列表
"""
# 一共13页
url_list = [self.baseutl.format(urlpage) for urlpage in range(1,14)]
return url_list
# 发送请求,获得响应数据
def get_html(self,url):
"""
:param url: 目标url地址
:return: 响应html数据
"""
response = requests.get(url=url,headers=self.headers)
return response.content.decode()
# 从响应中获取数据
def get_content(self,response):
"""
:param html: html数据
:return: 标题列表
"""
# 1.创建etree对象
html = etree.HTML(response)
# 2.使用xpath规则提取数据
res_list = html.xpath("//li//a[@class='recmd-content']/text()")
return res_list
# 保存数据
def save(self,restitle):
for item in restitle:
print(item)
# print(restitle)
# 执行程序
def run(self):
# 1.获取url地址
url_list = self.get_utls()
for url in url_list:
# 2.发送请求
response = self.get_html(url)
# 3.提取响应中的内容
restitle = self.get_content(response)
# 4.保存数据
self.save(restitle)
# print(restitle)
if __name__ == '__main__':
# 创建对象
obj1 = Qiushi()
# 执行run()方法
obj1.run()
最后获取的信息是以打印的方式展现的!
04、结语:
个人记录,新手入门,多多学习,欢迎大家交流探讨!
个人网站: http://106.54.78.238/
song_of _sea的个人网站 http://106.54.78.238/