使用python爬取百度热搜


前言

本文介绍使用request获取百度热搜的简单功能


一、requests是什么?

Python requests 是一个常用的 HTTP 请求库,可以方便地向网站发送 HTTP 请求,并获取响应结果。requests 模块比 urllib 模块更简洁。

二、使用步骤

1.引入库

使用 requests 发送 HTTP 请求需要先导入 requests 模块,同时为了解析及保存数据,我们也引入scrapy的Selector,pandas,sqlalchemy的create_engine :

import requests
from scrapy import Selector
import pandas as pd
from sqlalchemy import create_engine
from datetime import datetime

2.获取页面数据

调用requests的get方法,传入指定的url地址,可获取相应的网页数据,对于有反爬设置的网站需要设置cookies及header,通常需要添加user-agent信息,模拟浏览器访问:

# 对于有反爬设置的网站需要设置cookies及header
cookies = {}
headers = {}

# 使用requests 读取网页
response = requests.get('https://top.baidu.com/board?tab=realtime', cookies=cookies, headers=headers)
html = response.text

3.使用xpath解析页面,获取词条列表信息

需要分析百度热搜页面,找到对应的页面元素路径,解析并获取指定的数据信息:

# 使用Selector解析页面内容
selector = Selector(text=html)

# 获取热搜列表
list = selector.xpath('//*[@id="sanRoot"]/main/div[2]/div/div[2]/div')

4.获取指定元素信息,添加到dataframe中

获取对应的热词排序,标题,内容,词频及生成当前时间,并添加到数据集中:

# 声明 DataFrame
df = pd.DataFrame(columns=['index', 'title', 'content', 'count', 'dtime'])
lst_hot_word = []
for item in list:
    # index
    index = item.xpath('./a/div[1]/text()').extract()[0]
    # title
    title = item.xpath('./div[2]/a/div[1]/text()').extract()[0]
    # content
    content = item.xpath('./div[2]/div[1]/text()').extract()[0]
    # count
    count = item.xpath('./div[1]/div[2]/text()').extract()[0]
    # 获取当前时间
    now = datetime.now()
    df.loc[len(df)] = [index, title, content, count, now]
print(df)

5.保存数据到指定的文件或数据库

根据需要将抓取的数据保存到数据库:

# 保存到指定文件
# df.to_csv("./test.csv")

# 创建数据库引擎,根据需要配置自己的数据库信息
engine = create_engine('mysql+pymysql://root:test@localhost:3306/demo')

# 将DataFrame保存到数据库
df.to_sql('hot_word', con=engine, index=False, if_exists='append')

总结

通过以上python代码,即可获取百度热搜词条信息,可以定时运行相应的脚本,定时抓取相应的热搜数据,后续可以进行分析应用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值