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

​​​​​图一: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,安装方法请参考:优快云 《MAC如何安装和配置chromedriver》。
推荐教材:洪锦魁《python王者归来》


                
要使用Python爬取参考文献,可以参考以下步骤: 1. 首先,你可以使用Python的requests库发送POST请求来获取页信息。这是因为的查询结果存储在iframe中,所以需要通过POST请求来获取iframe中的内容。\[2\] 2. 在发送POST请求时,你需要使用合适的表单数据来模拟搜索框的输入。这可以通过查看页源代码来确定。\[3\] 3. 一旦你获取到了查询结果的页内容,你可以使用Python的BeautifulSoup库来解析页,并提取你需要的参考文献信息。BeautifulSoup可以帮助你定位提取页中的特定标签。\[3\] 通过以上步骤,你就可以使用Python爬取参考文献了。希望对你有帮助! #### 引用[.reference_title] - *1* [【爬虫实战】Python爬取文献信息](https://blog.youkuaiyun.com/weixin_68789096/article/details/130900608)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Python爬取CNKI论文的信息](https://blog.youkuaiyun.com/qq_41217121/article/details/106104297)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值