"""
b站排行榜爬虫(scrapy)
https://www.bilibili.com/ranking#!/all/0/0/7/
爬取编号,标题,url,综合评分,播放量,评论数
存储到mysql数据库

"""
import requests
from fake_useragent import FakeUserAgent
from lxml import etree
import re
import csv

url = 'https://www.bilibili.com/ranking#!/all/0/0/7/'
# 代理ip
proxies = {"http":"101.65.24.108:8118"}
headers = {
'User-Agent': FakeUserAgent().random
}
html = requests.get(url,params=proxies,headers=headers).text
# print(html)

# 构造树形结构
html1=etree.HTML(html)

"""
爬取编号,标题,url,综合评分,播放量,评论数
分析编号:
<div class="num">1</div>
<div class="num">2</div>
分析标题:
<a href="//www.bilibili.com/video/av55443085/" target="_blank" class="title">【党妹】三十变十三!毕业季必须拥有的芒果系JK妆容,成为甜甜山吹女孩!</a>
<a href="//www.bilibili.com/video/av55210171/" target="_blank" class="title">【中字.迪士尼反派系列2】后妈们的抱怨</a>
分析评分:
<div class="">2087768</div>
<div class="">1715927</div>
"""
bianhao = html1.xpath('//div[@class="num"]/text()')
print(bianhao)
titles = html1.xpath('//a[@class="title"]/text()')
print(titles)
urls = html1.xpath('//a[@class="title"]/@href')
# print(urls)
# 将url进行处理
url_list = []
for url in urls:
url = url.replace("//","").replace("/","")
url_list.append(url)
print(url_list)

grade = html1.xpath('//div[@class="pts"]/div/text()')
print(grade)
# 播放量
vv = html1.xpath('//div[@class="detail"]/span[1]/text()')
print(vv)
# 评论数
comment = html1.xpath('//div[@class="detail"]/span[2]/text()')
print(comment)

# 对数据进行处理保存成csv文件
# 使用zip函数,让数据一一对应
data_list = []
res = zip(bianhao,titles,url_list,grade,vv,comment)
for data in res:
data_list.append(data)
print(data_list)
# 打开一个csv文件
with open('../files/data/bzhan.csv','w',encoding='utf-8') as file:
csv_f = csv.writer(file)
# 添加第一行
csv_f.writerow(["id","title","url","grade","vv","comment"])
for row in data_list:
csv_f.writerow(row)

最新文章

  1. jprofiler_监控远程linux服务器的JVM进程(实践)
  2. 什么才是正确的javascript数组检测方式
  3. OC中的深拷贝与浅拷贝
  4. Android Activity交互及App交互
  5. C++学习笔记(十一):void*指针、类型转换和动态内存分配
  6. FileSystemWatcher使用方法
  7. Ubuntu 15.04 Rails4.2.5 处理异常
  8. form表单直接传文件
  9. js调用Webservice接口案例
  10. L1-006 连续因子 (20 分) 模拟
  11. sqlserver触发器insert,delete,update
  12. Mysql连接数太多ERROR 1040 (HY000): Too many connections
  13. NumPy学习(让数据处理变简单)
  14. jquery鼠标放上去显示悬浮层即弹出定位的div层
  15. 三种方式解决你的js加载乱码
  16. mysql架构图
  17. JavaScript实现表单验证
  18. Breadth-first Search-690. Employee Importance
  19. SpringCloud初体验:前言
  20. MyBatis 查询缓存

热门文章

  1. 快速实现一个简单阉割版的HashMap
  2. 虚拟DOM中给同一层级的元素设置固定且唯一的key为什么能提高性能
  3. LeetCode_387. 字符串中的第一个唯一字符
  4. C-07\字符串的输入输出及常用操作函数
  5. 线程基础知识09-JAVA的可见性和有序性问题
  6. Excel文件 利用MySQL/Python 实现自动处理数据的功能
  7. Python arcpy创建栅格、批量拼接栅格
  8. Lucky Tree
  9. ASP.NET Core - 依赖注入(三)
  10. 基于Python的OpenGL 03 之纹理