请用python语言将清明上河园的百度指数爬取出来,爬取的内容为访问的次数,时间范围为去年12.5号到今年的6月1号,请给出具体的可执行的代码
时间: 2024-04-02 17:37:08 浏览: 45
好的,以下是使用Python的示例代码,使用了selenium和BeautifulSoup库来爬取清明上河园的百度指数:
```python
from selenium import webdriver
from bs4 import BeautifulSoup
import time
# 设置爬取的时间范围
start_date = '20191205'
end_date = '20210601'
# 构造请求的URL
url = 'https://index.baidu.com/v2/main/index.html#/trend/{}/{}'.format(start_date, end_date)
# 打开浏览器,加载页面
driver = webdriver.Chrome()
driver.get(url)
time.sleep(5)
# 点击登录,手动完成登录操作
login_btn = driver.find_element_by_xpath('//a[@node-type="loginBtn"]')
login_btn.click()
input('请手动完成登录,登录成功后按回车继续')
# 获取页面内容
html = driver.page_source
# 解析页面内容,获取百度指数
soup = BeautifulSoup(html, 'html.parser')
trend_area = soup.find('div', {'class': 'trend-area'})
trend_chart = trend_area.find('div', {'class': 'trend-chart'})
data = trend_chart.attrs['data-series']
# 处理数据,获取访问次数
import json
data = json.loads(data)
pv_data = data['pv']
pv_data = [(int(x['x']), int(x['y'])) for x in pv_data]
pv_data = sorted(pv_data, key=lambda x: x[0])
# 输出结果
print('日期\t\t访问次数')
for date, pv in pv_data:
print('{}\t{}'.format(date, pv))
# 关闭浏览器
driver.quit()
```
这里使用了Selenium库来模拟浏览器行为,手动完成登录操作。需要注意的是,使用Selenium需要下载对应的浏览器驱动,这里使用的是Chrome浏览器,需要下载ChromeDriver,并将其添加到环境变量PATH中。如果使用其他浏览器,请下载相应的驱动。
另外,由于百度指数的页面加载需要一定的时间,这里使用了time.sleep来等待页面加载完成。如果你的网络较慢,可能需要增加等待时间。
希望以上的代码能对你有所帮助。
阅读全文