爬取哔哩哔哩热点搜索的小demo(练手)python

爬取流程

  1. 先找到浏览器标识头(User-Agent也可以网上搜这个头子)
    红圈是头,复制出来爬取哔哩哔哩热点搜索的小demo(练手)python
  2. (关键)找传回数据的url
    目标网站:b站搜索
    爬取这个:爬取哔哩哔哩热点搜索的小demo(练手)python
    开始我直接通过网页渲染数据爬取框内内容,发现这些内容是ajax请求渲染,网站加载完成才渲染出数据,不能第一时间爬取到,然后我开始另辟蹊径。。。找了好久终于找到
    爬取哔哩哔哩热点搜索的小demo(练手)python
    找到传回数据后面就好办了。。。。
  3. 代码实现
    先导需要的库 ,mysql连python用到: pip install pymysql
#python程序
#字典
import requests
import json
import pymysql.cursors


#加头标识
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36'
}

product=[]
#获取传回数据
resp=requests.get('https://s.search.bilibili.com/main/hotword?mid=&buvid=98E676EF-F586-403E-8440-52A6836FA68713451infoc&jsonp=jsonp&callback=jsonCallback_bili_58910703464582290',headers=headers)

rest=resp.text.replace('jsonCallback_bili_58910703464582290(','').replace(')','')
    #转换json键值对

json_data=json.loads(rest)

comments=json_data["list"]
#     #把想要的数据装入列表中
proDict=[]
for item in comments:
    proDict.append(item['keyword']+' ')
product.extend(proDict)

# 把数组里所有数据都转入字符串中(这里是学习用的,可以去除)
p=''.join(proDict)

print(p)


# 数据入库
# 连接数据库
conn = pymysql.connect(
          host='127.0.0.1',
          port=3306,
          user='root',
          passwd='root',
          db='bilidb',
          charset='utf8',
          cursorclass=pymysql.cursors.Cursor,
         )

cur=conn.cursor()
#这里用replace解决数据入库时重复数据的问题,注意hotword字段要设置唯一约束
for item in proDict:
        cur.execute("replace into hot(hotword) values('%s')" %(item))
#事务提交(这里尝试性的用了一个异常处理,嘿嘿可以去掉)
try:      
    conn.commit()
except AttributeError:
    print("错误")
cur.close()

数据库结构
爬取哔哩哔哩热点搜索的小demo(练手)python

数据库上记得把字段设置编码方式为utf-8,以解决中文乱码问题。

上一篇:python 中的数据库操作---pymysql


下一篇:Python爬取微博热搜榜,将数据存入数据库