Python爬虫爬取知网文献标题和摘要

Python爬虫爬取知网文献标题和摘要_第1张图片 ​​​​​图一:python爬虫结果
​​​

 大家好,我是代码新人。如图所示,这是我用python爬取知网文献,得到了文献的标题和摘要。下面我将向大家展示我的python代码,请各位批评指教。我的代码可以:1.自动点开知网,并在知网首页搜索框以“人工智能”(或任意其他)为主题进行搜索;2.得到搜索结果后,python程序将得到搜索结果网页的页码数,并逐页爬取数据;3.根据每页搜索结果,逐一点开每条文献链接并爬取该条文献的标题和摘要。

下面是我的代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
import time
import re
browser = webdriver.Chrome()
url="https://www.cnki.net/"
browser.get(url)
txtBox= browser.find_element(By.CLASS_NAME,'search-input')
txtBox.send_keys("人工智能")
txtBox= browser.find_element(By.CLASS_NAME,'search-btn')
txtBox.click()
browser.switch_to.window(browser.window_handles[1])
time.sleep(5)
page_mark=browser.find_element(By.CLASS_NAME,'countPageMark').text
def find_all_pages(page_mark):
    pageRule=re.compile(r'(\d)/(\d{3})')
    all_pages=re.search(pageRule,page_mark)
    return int(all_pages.group(2))
allpages=find_all_pages(page_mark)
for page in range(1,allpages+1):
    time.sleep(10)
    all_liter = WebDriverWait(browser, 10).until(EC.presence_of_all_elements_located((By.CLASS_NAME, 'fz14')))
    time.sleep(5)
    print("您现在在第%s页" % page)
    i = 0
    for i in range(len(all_liter)):
        all_liter[i].click()
        n2 = browser.window_handles
        browser.switch_to.window(n2[-1])
        art_title = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '/html/body/\
        div[2]/div[1]/div[3]/div/div/div[3]/div/h1'))).text
        abstract = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '/html/body\
        /div[2]/div[1]/div[3]/div/div/div[4]/span[2]'))).text
        print(art_title, abstract)
        n3 = browser.window_handles
        if len(n3) > 2:
            browser.close()
            browser.switch_to.window(n2[1])
    PageNext=browser.find_element(By.TAG_NAME,'body')
    PageNext.send_keys(Keys.RIGHT)

我的代码一共仅有43行,第12行的txt.send_keys()是搜索主题,我搜索的是“人工智能”,可以换任意的主题搜索。
我的代码参考了知乎文章:《Python爬虫实战(5) | 爬取知网文献信息(已优化代码)》
进行知网爬虫的前提:
1.需要在终端窗口(shell/console,不是python文件里)安装selenium包,命令是:pip install selenium;2.需要有firefox/chrome浏览器;3. 以上两种浏览器必须安装插件,firefox需要安装geckodriver,chrome需要安装chromedriver,安装方法请参考:CSDN 《MAC如何安装和配置chromedriver》。
推荐教材:洪锦魁《python王者归来》

 
 

你可能感兴趣的:(python,爬虫,开发语言)