python+selenium爬虫按照名单循环爬取作者知网下载量等信息
主要爬取下面的表格内的信息如文献篇数,被引用数等等用的是selenium爬虫from selenium import webdriverfrom selenium.common.exceptions import NoSuchElementExceptionimport csvimport timebrowser = webdriver.Chrome()browser.minimi...
·
主要爬取下面的表格内的信息如文献篇数,被引用数等等
用的是selenium爬虫
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import csv
import time
browser = webdriver.Chrome()
browser.minimize_window() # 最小化窗口
url = 'http://epub.cnki.net/grid2008/brief/result_src.aspx?comptype=scho&stype=1&&auscho_1_sel=%E5%AD%A6%E8%80%85&auscho_1_value1=%E8%B5%B5%E5%AA%9B&auscho_1_special1=%3D&auscho2_1_sel=%E7%A0%94%E7%A9%B6%E9%A2%86%E5%9F%9F%2C%E7%A0%94%E7%A9%B6%E6%96%B9%E5%90%91%2C%E5%AD%A6%E8%80%85%E7%9F%A5%E8%AF%86%E5%90%91%E9%87%8F&auscho2_1_value1=%E5%9B%BE%E4%B9%A6%E6%83%85%E6%8A%A5&auscho2_1_special1=%25&navicode=&showtitle=%u5B66%u8005%u68C0%u7D22&dbCatalog=%u4E2D%u56FD%u5B66%u672F%u6587%u732E%u7F51%u7EDC%u51FA%u7248%u603B%u5E93'
def start_spider():
# 请求url
browser.get(url)
time.sleep(5)
try:
browser.find_element_by_id('iframeResult')# 定位到iframe
except NoSuchElementException:
print('no')
browser.switch_to.parent_frame()#切换到父iframe
x=browser.switch_to.frame('iframeResult')
# browser.switch_to.frame('iframeResult')
a = browser.find_element_by_class_name('s_table')
tr_content = a.find_elements_by_tag_name("tr") # 进一步定位到表格内容所在的tr节点
lst = [] # 存储为list
for tr in tr_content:
tds =tr.find_elements_by_tag_name("td") # 进一步定位到表格内容所在的td节点
for td in tds:
lst.append(td.text)
with open('D:\Python_DATA\data.csv','a', encoding='utf-8',newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(lst)
lst.clear()
# a=browser.find_element_by_class_name('s_tabletd_rb')
print(lst) # 输出表格内容
browser.switch_to.default_content()
f = open('D:\Python_DATA\sd.csv', 'r')
content = f.read()
final_list = list()
rows = content.split('\n')
#名单转换成list
for row in rows:
final_list.append(row.split(','))
for word in final_list:
try:#异常处理,有的人查询不到
print(word)
browser.find_element_by_id('auscho_1_value1').clear()
browser.find_element_by_id('auscho_1_value1').send_keys(word)
browser.find_element_by_class_name('butt04').click()
try:
time.sleep(2)
browser.find_element_by_id('iframeResult')
except NoSuchElementException:
print('no')
browser.switch_to.parent_frame()#切换到父iframe
x=browser.switch_to.frame('iframeResult')
# browser.switch_to.frame('iframeResult')
a = browser.find_element_by_class_name('s_table')
tr_content = a.find_elements_by_tag_name("tr") # 进一步定位到表格内容所在的tr节点
for tr in tr_content:
tds =tr.find_elements_by_tag_name("td") # 进一步定位到表格内容所在的td节点
for td in tds:
lst.append(td.text)
with open('D:\Python_DATA\data.csv','a', encoding='utf-8',newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(lst)
lst.clear()
# a=browser.find_element_by_class_name('s_tabletd_rb')
browser.switch_to.default_content()
except:
print('查无此人')
continue
if __name__ == '__main__':
start_spider()
#browser.close()
print("爬取完成,请到相应文件夹查看!")
效果图:
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献2条内容
所有评论(0)