**爬取斗鱼数据**

目录

前期准备工作

爬取数据

        第一步:爬取到所有分类的地址。

        第二步:爬取对应分类的数据。

数据库存储

总结


前期准备工作

        1.在pycharm中安装好所需要的库,requests,pyquery,如果想要存入数据库,需要再下载pymysql。

pip install requests
pip install pymysql
pip install pyquery

        2.获取需要爬取的网站,在这里用到的是颜值直播_颜值视频_斗鱼直播 (douyu.com)

        3.分析网站,首先按下F12打开检查,然后点击网络,点击文档,会有一个html文档,经过分析,该文档中可以看到在线直播的分类。如图:

        在这能够看到有全部,PK多人连麦等分类。再看网页中,如图。

        可以看到文档中的分类与网页中的一一对应。

        4.复制对应的请求地址,如图。

点击标头,复制地址。


爬取数据

        第一步:爬取到所有分类的地址。

import requests
import json
from pyquery import PyQuery as pq

url = "https://www.douyu.com/g_yz"

# 发送请求
response = requests.get(url)

# 获取响应数据
doc = pq(response.text)
items = doc(".layout-Module-filter-list a").items()
new_items = []
for item in items:
    if item.attr["href"]:
        new_items.append(item.attr["href"])
print(new_items)

        在爬取的过程中将没有href属性的直接剔除,避免影响程序。

        以上就是运行结果。

        第二步:爬取对应分类的数据。

        在网页中点击pk分类后打开检查,点击Fetch可以看都有一个名字为1的文档,点开后点击标头,将标头中的请求地址与刚才爬取下来的分类的地址进行对比会发现标头中的请求地址的下划线后最后一个反斜杠前的数字就是爬取的每一个分类对应的地址的最后的数字。比如:'/directory/subCate/yz/2720'与https://www.douyu.com/gapi/rkc/directory/mixList/3_2720/1

        爬取具体数据代码如下:

import requests
import json
from pyquery import PyQuery as pq

url = "https://www.douyu.com/g_yz"

# 发送请求
response = requests.get(url)

# 获取响应数据
doc = pq(response.text)
items = doc(".layout-Module-filter-list a").items()
new_items = []
for item in items:
    if item.attr["href"]:
        new_items.append(item.attr["href"].split("/")[-1])

for item in new_items:
    new_url = f'https://www.douyu.com/gapi/rkc/directory/mixList/3_{item}/1'
    response = requests.get(url=new_url)
    data = json.loads(response.text)["data"]["rl"]
    for i in data:
        rn = i["rn"]
        nn = i["nn"]
        ol = i["ol"]
        rs1 = i["rs1"]
        print(rn, nn, ol, rs1)

        代码中data是一个列表,可以自行选取需要的内容。


数据库存储

        1.先去创建一个数据库,在这里我使用的是MySQL数据库。

        2.连接数据库,将数据存入数据库。

代码如下:

import requests
import json
from pyquery import PyQuery as pq
import pymysql

# 连接数据库
db = pymysql.Connect(host="localhost", user="root", password="011208", db="斗鱼数据")
# 创建游标
cursor = db.cursor()
# 自动提交
db.autocommit(True)

url = "https://www.douyu.com/g_yz"

# 发送请求
response = requests.get(url)

# 获取响应数据
doc = pq(response.text)
items = doc(".layout-Module-filter-list a").items()
new_items = []
for item in items:
    if item.attr["href"]:
        new_items.append(item.attr["href"].split("/")[-1])

for item in new_items:
    new_url = f'https://www.douyu.com/gapi/rkc/directory/mixList/3_{item}/1'
    response = requests.get(url=new_url)
    data = json.loads(response.text)["data"]["rl"]
    for i in data:
        rn = i["rn"]
        nn = i["nn"]
        ol = i["ol"]
        rs1 = i["rs1"]
        # 创建sql语句
        sql = f"insert into douyu(rn,nn,ol,rs1) values('{rn}','{nn}','{ol}','{rs1}')"
        # 执行sql语句
        try:
            cursor.execute(sql)
        except:
            print("出异常了")
        print(rn, nn, ol, rs1)

# 关闭数据库连接
db.close()
# 关闭游标
cursor.close()


总结

        用到的关键模块是requests,json,pyquery以及pymysql,requests主要是发送get请求,json主要是将获取到的数据进行反序列化,pyquery模块可以使用css选择器选择需要的数据,pymysql模块是将pycharm与MySQL连接起来方便存储数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C&&Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值