文章目录
前言
本文介绍使用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代码,即可获取百度热搜词条信息,可以定时运行相应的脚本,定时抓取相应的热搜数据,后续可以进行分析应用
标签:xpath,python,text,爬取,获取,df,div,requests,百度 From: https://blog.csdn.net/alex190824/article/details/143640533