记第一次爬虫实践,拜读了几篇高质量的文章后,自己动手写点东西。
使用Python爬取关键词下的论文信息:标题、链接地址、摘要、出版单位、论文类型、出版年份、下载次数、引用次数。以上信息存放在Excel表格中。
笔者使用的链接的接口是:知识搜索 http://search.cnki.net/SearchFruitless.aspx
网上给出的其他接口有:远见搜索—站得更高,看得更远! http://yuanjian.cnki.com.cn/
具体代码如下:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
from openpyxl import workbook # 写入Excel表所用
#from openpyxl import load_workbook # 读取Excel表所用
if __name__=="__main__":
# 创建Excel表并写入数据
ws = [] # 全局工作表对象
wb = workbook.Workbook() # 创建Excel对象
ws = wb.active # 获取当前正在操作的表对象
ws.append(['标题名', '链接地址', '摘要', '单位—类型—年份—下载次数-被引次数']) # 往表中写入标题行,以列表形式写入!
keywords='移动通信' ### 查询的主题 ,引号内容根据需要修改
target='http://search.cnki.net/search.aspx?q='+str(keywords)+'&rank=relevant&cluster=all&val=CJFDTOTAL&p={}'
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'
headers = {
'User-Agent':user_agent}
for i in range(10):
i=i*15 #每页有15篇论文
target=target.format(i) #翻页,是在p={}中修改页数链接
req=requests.get(url=target)
html=req.text
html=html.replace('
',' ').replace('
',' ').replace('/>','>')
bf=BeautifulSoup(html,"html.parser")
texts=bf.find('div',class_='articles')#查看页面对应的审查元素,标签为articles
texts_div=texts.find_all('div',class_='wz_content')#查看页面对应的审查元素,标签为wz_content
for item in texts_div:
item_name=item.find('a').text #标题
item_href=item.find('a')['href']#链接网址
item_abstract = item.find('span', class_='text').text#摘要
item_refer = item.find('span', class_='year-count').text#发表单位、发表类型、发表年份、下载次数_引用次数
#print('{} {} {} {}\n'.format(item_name,item_href,item_refer3,item_refer2))测试能否正常输出
ws.append([item_name,item_href,item_abstract,item_refer]) #向表格中添加需要的信息
wb.save('mobile_communication_paper.xlsx')
print("已完成")