Python怎么爬取当网书籍数据并数据可视化展示,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
一、开发环境
Python 3.8
Pycharm 2021.2 专业版
二、模块使用
csv
模块 把爬取下来的数据保存表格里面的 内置模块requests >>> pip install requests
数据请求模块parsel >>> pip install parsel
数据解析模块 css选择器去提取数据
三、爬虫代码实现步骤
导入所需模块
发送请求, 用
python
代码模拟浏览器发送请求解析数据, 提取我们想要数据内容
多页爬取
保存数据, 保存
csv
表格里面
1. 导入所需模块
import requests # 数据请求模块 第三方模块 需要 pip install requests import parsel # 数据解析模块 第三方模块 需要 pip install parsel import csv # 保存csv表格数据模块 内置模块 import time # 时间模块
2. 发送请求, 用python代码模拟浏览器发送请求
headers
请求头 作用就是python
代码伪装成浏览器 对于服务器发送请求
User-Agent
用户代理 浏览器的基本身份标识
标题中无效的返回字符或前导空格:User-Agent
不要留有空格
通过requests
模块里面get请求方法,对于url地址发送请求,并且携带上面header
请求头参数,最后用response
变量接收返回数据
url = f'http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-{page}' # headers 请求头 字典数据类型 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36' } response = requests.get(url=url, headers=headers)
3. 解析数据, 提取我们想要数据内容
selector = parsel.Selector(response.text) # 对于获取到的html字符串数据进行转换 selector 对象 # css选择器 就是根据标签属性提取相应的数据 lis = selector.css('ul.bang_list li') for li in lis: # .name 定位 class类名name标签 a 标签 attr() 属性选择器 取a标签里面title属性 get() 获取数据 title = li.css('.name a::attr(title)').get() # 书名 # 获取标签里面文本数据 直接text comment = li.css('.star a::text').get().replace('条评论', '') # 评论 recommend = li.css('.star .tuijian::text').get().replace('推荐', '') # 推荐 author = li.css('.publisher_info a:nth-child(1)::attr(title)').get() # 作者 publish = li.css('div:nth-child(6) a::text').get() # 出版社 price_n = li.css('.price .price_n::text').get() # 售价 price_r = li.css('.price .price_r::text').get() # 原价 price_s = li.css('.price .price_s::text').get() # 折扣 price_e = li.css('.price .price_e .price_n::text').get() # 电子书价格 href = li.css('.name a::attr(href)').get() # 详情页 dit = { '书名': title, '评论数': comment, '推荐量': recommend, '作者': author, '出版社': publish, '售价': price_n, '原价': price_r, '折扣': price_s, '电子书价格': price_e, '详情页': href, } csv_writer.writerow(dit) # 数据保存到csv print(title, comment, recommend, author, publish, price_n, price_r, price_s, price_e, href, sep=' | ')Python怎么爬取当网书籍数据并数据可视化展示