Python文献爬虫②
2019-11-21 本文已影响0人
研究僧小蓝哥
得到上次爬虫的结果以后,需要完成的是把每篇的摘要都爬取下来。先前爬取的表格需要做一丢丢修改,只需要文章标题和URL链接,就像这样:
图片来子小蓝哥
下面就是哗哗哗写代码了。
import time
import csv
import openpyxl
import os
import requests
from bs4 import BeautifulSoup
time_start = time.time()
print(os.getcwd())
csv_file=open('clean.csv','r',newline='')
reader=csv.reader(csv_file)
user_agent = {
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}
title_link_result = openpyxl.Workbook()
sheet = title_link_result.active
sheet.title = 'CNKI结果'
col_name = ['link','abstract']
url_list = []
for i in reader:
url_list.append(i)
sheet.append(col_name)
result = []
for i in url_list[0:len(url_list)]:
url = i[1]
res = requests.get(url)
soup = BeautifulSoup(res.text,'html.parser')
try:
items = soup.find('div',id = 'content')
abstract = items.find('div',class_='xx_font').text
except AttributeError:
abstract = 'None'
sheet.append([url,abstract])
result.append([url,abstract])
print(abstract)
time_end = time.time()
print('成功爬取:%s条'%len(result))
print('耗时:',time_end - time_start)
#if len(result) in range(500,6994,500):
#time.sleep(300)
title_link_result.save('根系分泌物CNKI结果.xlsx')
一般是爬取2500条以下的话,知网无障碍响应。超过2500条以后服务器可能会无法响应。
看看结果
图片来子小蓝哥因为一次爬6000+的话,肯定会被封IP,然后无响应,就分几次爬虫。
最后的Excel表和上次的表通过Vlookup就能get到一次了。
外卖到了!