爬虫实践:抓取IEEE文章的摘要

本文介绍了一种使用Selenium库抓取IEEE Explore网站上指定文章摘要的爬虫实现方法,详细展示了如何设置Chrome WebDriver,定位并提取文章摘要,以及将结果保存至本地文件的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

尝试抓取以下网页中的前两页文章的Abstract。

https://ieeexplore.ieee.org/search/searchresult.jsp?queryText=complementary%20code&highlight=true&returnFacets=ALL&returnType=SEARCH&matchPubs=true&ranges=2017_2020_Year

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

import json
import time
#保存信息函数
def write_to_file(Abstract):
    with open('result.txt', 'a', encoding='utf-8') as f:
        f.write(json.dumps(Abstract, ensure_ascii=False) + '\n')

#任务:爬取2页或多页指定URL的文章摘要
def main(pageNumber):
    browser = webdriver.Chrome()
    browser.implicitly_wait(200)#这是延时等待。由于网速时快时慢,而get方法会在网页框架加载结束后停止执行,
    #这就会导致有些时候我们打算获取的内容还没被加载进来便结束了获取页面数据,最后报错,拿不到想要的数据。
    url = 'https://ieeexplore.ieee.org/search/searchresult.jsp?queryText=complementary%20code&highlight=true&returnFacets=ALL&returnType=SEARCH&matchPubs=true&ranges=2017_2020_Year&pageNumber='+str(pageNumber)
    browser.get(url)
    #遇到class name中的复合情况(即有多个class name中间是空格隔开的)
    #选取其中一个具有全局唯一性的class name即可准确定位所要查找的结点内容
    AbstractList = browser.find_elements_by_class_name('stats-SearchResults_DocResult_ViewMore')
    for Abstract in AbstractList:
        #对于需要点击才显示出来的页面内容(隐藏内容)需要使用下面的方法获取文本信息
        result = browser.execute_script("return arguments[0].textContent", Abstract)
        print(result)
        write_to_file(result)#写入文本文件进行保存

if __name__ == "__main__":
    for i in range(2):
        j = i + 1
        main(pageNumber = j)
        #time.sleep(1)#有些网站有反爬虫机制,如果访问间隔时间很短则不会响应。

 

 

附件:(网页基础)

URL:universal resource locator统一资源定位符,也可以称为网址、网页链接之类的。

超文本:hypertext,不止是文本,还有图片、音频、视频等等的网页

HTTP与HTTPS:https是http的加密版本,目前向https发展。

GET与POST请求有什么不同?

get请求,填写的内容会暴露在URL中,如在百度查询“爬虫”:

此外,get请求还限制字长,最多1024字节。

post请求多见于表单提交,如填写登录账户和密码,它们不会出现在URL中,并且不限制提交内容的长度。

【另】上传文件时,由于文件较大,也通常选用POST方法。

网页有静态页面(如HTML,他们上面所显示的所有内容在HTML源码上都会有),也有动态页面(如上面的实践所爬取的页面,它就包含需要动态加载进来的内容【如其中的文章信息部分】,这些内容无法通过查看页面源代码看到)。另外动态显示的内容中又有或点击或下拉等方式才会显示的内容(即隐藏内容),它们和正常显示的内容所用到的获取方法是不同的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值