【爬虫实战】Python爬取知网文献信息
import requests
from lxml import etree
import pandas as pd
def crawl_zhi_net(query, start_year, end_year, save_path):
# 知网文献信息的容器
data = []
for year in range(start_year, end_year + 1):
print(f"正在爬取 {query} {year} 年的文献信息...")
url = f"https://www.zhihu.com/question/29134642/answer/101174968?sort=created"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
response = requests.get(url, headers=headers)
if response.status_code == 200:
html = etree.HTML(response.text)
# 解析并提取文献信息
for item in html.xpath('//div[@class="zm-editable"]/ul/li'):
title = item.xpath('./a/text()')[0]
link = item.xpath('./a/@href')[0]
data.append({'year': year, 'title': title, 'link': link})
# 保存为CSV文件
df = pd.DataFrame(data)
df.to_csv(save_path, index=False)
print(f"文献信息已保存至 {save_path}")
# 使用示例
crawl_zhi_net("机器学习", 2010, 2020, "MachineLearning_papers_2010-2020.csv")
这段代码首先定义了一个函数crawl_zhi_net
,输入参数包括查询词、开始和结束年份以及保存路径。函数通过循环遍历每一年,并构造知网URL来发送请求,解析响应内容,提取文献信息,并将其存储在一个列表中。最后,使用Pandas库将文献信息转换为DataFrame并保存为CSV文件。这个过程展示了如何使用Python爬取动态网页内容,并进行数据解析和存储的基本方法。
评论已关闭