Python爬虫之基于 selenium 实现文献信息获取

58 篇文章 4 订阅
订阅专栏

最近有小伙伴后台跟我说,临近毕业,写毕业论文需要上知网查找大量的文献,但是一篇一篇看文献信息以及文献摘要又有点麻烦,能不能让我写一个爬虫去批量获取文献相关信息

我一听好家伙,当初我写毕业论文的时候也是饱经查阅文献的折磨,深知那种痛苦

但是知网作为国内知名的文献数据库之一,有着极其复杂的反爬虫机制,例如动态JS、iframe、验证码等等,不是说想爬就能爬的

像我之前采用 requests 模拟请求的方法来爬取的话难度很大,一个不小心就有可能被封 IP

本篇文章就主要介绍该如何使用 **Selenium **来巧爬知网

初识 selenium

selenium 是一个自动化测试工具,可以用来进行 web 自动化测试

selenium 本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器

爬虫中用到 selenium 主要是为了解决 requests 无法直接执行 JavaScript 代码等问题

下面就来介绍下 selenium 基础用法

声明浏览器对象

Selenium 支持非常多的浏览器,如Chrome、Firefox、Edge 等

我们只要首先下载好相应浏览器的驱动(webdriver)到python主目录中,或者加入环境变量即可

#Firefox浏览器驱动:
https://link.zhihu.com/?target=https%3A//github.com/mozilla/geckodriver/releases

#Chrome浏览器驱动:
https://registry.npmmirror.com/binary.html?path=chromedriver/

#IE浏览器驱动:IEDriverServer
https://link.zhihu.com/?target=http%3A//selenium-release.storage.googleapis.com/index.html

#Edge浏览器驱动:MicrosoftWebDriver
https://link.zhihu.com/?target=https%3A//developer.microsoft.com/en-us/microsoft-edge/tools/webdriver

下载好驱动之后就可以浏览器初始化了

from selenium import webdriver

browser = webdriver.Chrome()
browser = webdriver.Firefox()
browser = webdriver.Edge()
browser = webdriver.Safari()

访问页面

我们可以用 get() 方法来请求一个网页,传入参数链接URL

browser.get('https://blog.csdn.net/s_alted')

查找元素

#根据 id 查找
find_element_by_id()

#根据 name 查找
find_element_by_name()

#根据 class name 查找
find_element_by_class_name()

#根据 Tag name 查找
find_element_by_tag_name()

#根据 完整超链接 查找
find_element_by_link_text()

#根据 部分超链接 查找
find_element_by_partial_link_text()

#根据 xpath 查找
find_element_by_xpath()

#根据 css选择器 查找
find_element_by_css_selector()

PS:

上面的 element 变成 elements(例如find_elements_by_id)就是找到所有满足的条件,然后返回数据

等待页面加载完成

有显式等待和隐式等待

显式等待使 WebdDriver 等待某个条件成立时继续执行,否则在达到最大时长时抛出超时异常(TimeoutException)

WebDriverWait 类是由 WebDirver 提供的等待方法。在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常

常用浏览器操作

在找到浏览器相应元素的位置之后,我们就需要进行一些交互动作,例如双击、点击、输入、获取网页源码等等

element = find_element_by_id(ID,id)

element.send_keys(Keys.CONTROL,'c')   # 复制

element.send_keys("hello") #传入 hello

element.clear()  # 清除输入框

element.click()  # 单击元素

element.text  # 获取元素文本信息

element.get_attribute('href')  # 获取元素属性

有了上面这些基本用法,就可以开始编写代码程序了!

网页分析

知网官网:https://www.cnki.net/

按照这位同学的需求,需要进入到知网官网之后——>点击高级搜索图标
在这里插入图片描述
然后在文献来源输入框处输入相关内容,然后点击检索图标
在这里插入图片描述
在这里插入图片描述
因此可以得到如下步骤:

进入官网点击高级搜索——>在文献来源处输入信息——>点击检索

通过 F12 检查浏览器页面,得到高级搜索图标和输入框以及检索图标元素的 xpath 分别如下:在这里插入图片描述
在这里插入图片描述

#高级搜索 xpath
/html/body/div[2]/div[2]/div/div[2]/a[1]

#输入框 xpath
/html/body/div[2]/div/div[2]/div/div[1]/div[1]/div[2]/dl/dd[3]/div[2]/input

#检索 xpath
/html/body/div[2]/div/div[2]/div/div[1]/div[1]/div[2]/div[2]/input

接着我们发现结果页(以搜索管理世界为例)在这里插入图片描述
共找到 8550 条结果,300页,每一页包含 20 条文献条目

每个条目包含题目、作者、来源等信息

通过对当前页面分析,发现每条文献条目的 xpath 是有规律的

#题名
/html/body/div[3]/div[2]/div[2]/div[2]/form/div/table/tbody/tr[1]/td[2]

#作者
/html/body/div[3]/div[2]/div[2]/div[2]/form/div/table/tbody/tr[1]/td[3]

tr[1] 表示本页第一条条目,而 td[2] 中的2-6 分别代表作者、来源、发表时间和数据库

我们在当前页面是无法获取到文献的摘要、关键字等信息,需要进一步点击进入相关文献条目

进入到相关文献页面之后,根据 class name来获取摘要、关键字、是否为CSSCI 这些元素

在这里插入图片描述
在这里插入图片描述
完成以上知网页面的分析后,我们就可以根据需求开始写代码了!

代码实现

导入所需包

import time 
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

创建浏览器对象

这里我用的是 Edge 浏览器

# get直接返回,不再等待界面加载完成
desired_capabilities = DesiredCapabilities.EDGE
desired_capabilities["pageLoadStrategy"] = "none"

# 设置 Edge 驱动器的环境
options = webdriver.EdgeOptions()
# 设置 Edge 不加载图片,提高速度
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})

# 创建一个 Edge 驱动器
driver = webdriver.Edge(options=options)

传入 url 参数然后模拟对浏览器进行人为操作

适当的加入 time.sleep() 方法,等待页面加载完成

不然页面还没完全加载就执行下一步操作的话会报错

# 打开页面
driver.get("https://kns.cnki.net/kns8/AdvSearch")
time.sleep(2)
    
# 传入关键字
WebDriverWait(driver, 100).until(
        EC.presence_of_element_located((By.XPATH, '''//*[@id="gradetxt"]/dd[3]/div[2]/input'''))).send_keys(theme)
time.sleep(2)
    
# 点击搜索
WebDriverWait(driver, 100).until(
        EC.presence_of_element_located((By.XPATH, "/html/body/div[2]/div/div[2]/div/div[1]/div[1]/div[2]/div[2]/input"))).click()
time.sleep(3)

 # 点击切换中文文献
WebDriverWait(driver, 100).until(
        EC.presence_of_element_located((By.XPATH, "/html/body/div[3]/div[1]/div/div/div/a[1]"))).click()
time.sleep(3)

获取总文献数和页数

res_unm = WebDriverWait(driver, 100).until(EC.presence_of_element_located(
        (By.XPATH, "/html/body/div[3]/div[2]/div[2]/div[2]/form/div/div[1]/div[1]/span[1]/em"))).text

# 去除千分位的逗号
res_unm = int(res_unm.replace(",", '')) 
page_unm = int(res_unm / 20) + 1
print(f"共找到 {res_unm} 条结果, {page_unm} 页。")

对结果页进行解析

def crawl(driver, papers_need, theme):
    # 赋值序号, 控制爬取的文章数量
    count = 1

    # 当爬取数量小于需求时,循环网页页码
    while count <= papers_need:
        # 等待加载完全,休眠3S
        time.sleep(3)

        title_list = WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.CLASS_NAME, "fz14")))
        # 循环网页一页中的条目
        for i in range(len(title_list)):
            try:
                if count % 20 != 0:
                    term = count % 20  # 本页的第几个条目
                else:
                    term = 20
                title_xpath = f"/html/body/div[3]/div[2]/div[2]/div[2]/form/div/table/tbody/tr[{term}]/td[2]"
                author_xpath = f"/html/body/div[3]/div[2]/div[2]/div[2]/form/div/table/tbody/tr[{term}]/td[3]"
                source_xpath = f"/html/body/div[3]/div[2]/div[2]/div[2]/form/div/table/tbody/tr[{term}]/td[4]"
                date_xpath = f"/html/body/div[3]/div[2]/div[2]/div[2]/form/div/table/tbody/tr[{term}]/td[5]"
                database_xpath = f"/html/body/div[3]/div[2]/div[2]/div[2]/form/div/table/tbody/tr[{term}]/td[6]"
                title = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, title_xpath))).text
                authors = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, author_xpath))).text
                source = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, source_xpath))).text
                date = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, date_xpath))).text
                database = WebDriverWait(driver, 10).until(
                    EC.presence_of_element_located((By.XPATH, database_xpath))).text
                # 点击条目
                title_list[i].click()
                # 获取driver的句柄
                n = driver.window_handles
                # driver切换至最新生产的页面
                driver.switch_to.window(n[-1])
                time.sleep(3)
                # 开始获取页面信息
                title = WebDriverWait(driver, 10).until(EC.presence_of_element_located(
                    (By.XPATH, "/html/body/div[2]/div[1]/div[3]/div/div/div[3]/div/h1"))).text
                authors = WebDriverWait(driver, 10).until(EC.presence_of_element_located(
                    (By.XPATH, "/html/body/div[2]/div[1]/div[3]/div/div/div[3]/div/h3[1]"))).text
                institute = WebDriverWait(driver, 10).until(EC.presence_of_element_located(
                    (By.XPATH, "/html/body/div[2]/div[1]/div[3]/div/div/div[3]/div/h3[2]"))).text
                abstract = WebDriverWait(driver, 10).until(
                    EC.presence_of_element_located((By.CLASS_NAME, "abstract-text"))).text
                try:
                    keywords = WebDriverWait(driver, 10).until(
                        EC.presence_of_element_located((By.CLASS_NAME, "keywords"))).text[:-1]
                    cssci = WebDriverWait(driver, 10).until(
                        EC.presence_of_element_located((By.XPATH, "/html/body/div[2]/div[1]/div[3]/div/div/div[1]/div[1]/a[2]"))).text
                except:
                    keywords = '无'
                    cssci = 'NULL'
                url = driver.current_url

                # 写入文件
                res = f"{count}\t{title}\t{authors}\t{cssci}\t{institute}\t{date}\t{source}\t{database}\t{keywords}\t{abstract}\t{url}".replace(
                        "\n", "") + "\n"
                print(res)
                with open(f'{theme}.tsv', 'a', encoding='gbk') as f:
                    f.write(res)
            except:
                print(f" 第{count} 条爬取失败\n")
                # 跳过本条,接着下一个
                continue
            finally:
                # 如果有多个窗口,关闭第二个窗口, 切换回主页
                n2 = driver.window_handles
                if len(n2) > 1:
                    driver.close()
                    driver.switch_to.window(n2[0])
                # 计数,判断篇数是否超出限制
                count += 1
        if count == papers_need:
            break
        else:
            # 切换到下一页
            WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//a[@id='PageNext']"))).click()

结果展示:在这里插入图片描述
结果是一个以制表符分隔的表格文件(用 excel 打开),其中包含了论文的基本信息,包括:题目、作者、是否 CSSCI、来源、摘要

完整代码如下:

import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from urllib.parse import urljoin


def open_page(driver, theme):
    # 打开页面
    driver.get("https://kns.cnki.net/kns8/AdvSearch")
    time.sleep(2)

    # 传入关键字
    WebDriverWait(driver, 100).until(
        EC.presence_of_element_located((By.XPATH, '''//*[@id="gradetxt"]/dd[3]/div[2]/input'''))).send_keys(theme)
    time.sleep(2)

    # 点击搜索
    WebDriverWait(driver, 100).until(
        EC.presence_of_element_located((By.XPATH, "/html/body/div[2]/div/div[2]/div/div[1]/div[1]/div[2]/div[2]/input"))).click()
    time.sleep(3)

    # 点击切换中文文献
    WebDriverWait(driver, 100).until(
        EC.presence_of_element_located((By.XPATH, "/html/body/div[3]/div[1]/div/div/div/a[1]"))).click()
    time.sleep(3)

    # 跳转到第三页
    # WebDriverWait(driver, 100).until(
    #     EC.presence_of_element_located((By.XPATH, "/html/body/div[3]/div[2]/div[2]/div[2]/form/div/div[2]/a[2]"))).click()
    # time.sleep(3)

    # 获取总文献数和页数
    res_unm = WebDriverWait(driver, 100).until(EC.presence_of_element_located(
        (By.XPATH, "/html/body/div[3]/div[2]/div[2]/div[2]/form/div/div[1]/div[1]/span[1]/em"))).text

    # 去除千分位里的逗号
    res_unm = int(res_unm.replace(",", ''))
    page_unm = int(res_unm / 20) + 1
    print(f"共找到 {res_unm} 条结果, {page_unm} 页。")
    return res_unm


def crawl(driver, papers_need, theme):
    # 赋值序号, 控制爬取的文章数量
    count = 1

    # 当爬取数量小于需求时,循环网页页码
    while count <= papers_need:
        # 等待加载完全,休眠3S
        time.sleep(3)

        title_list = WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.CLASS_NAME, "fz14")))
        # 循环网页一页中的条目
        for i in range(len(title_list)):
            try:
                if count % 20 != 0:
                    term = count % 20  # 本页的第几个条目
                else:
                    term = 20
                title_xpath = f"/html/body/div[3]/div[2]/div[2]/div[2]/form/div/table/tbody/tr[{term}]/td[2]"
                author_xpath = f"/html/body/div[3]/div[2]/div[2]/div[2]/form/div/table/tbody/tr[{term}]/td[3]"
                source_xpath = f"/html/body/div[3]/div[2]/div[2]/div[2]/form/div/table/tbody/tr[{term}]/td[4]"
                date_xpath = f"/html/body/div[3]/div[2]/div[2]/div[2]/form/div/table/tbody/tr[{term}]/td[5]"
                database_xpath = f"/html/body/div[3]/div[2]/div[2]/div[2]/form/div/table/tbody/tr[{term}]/td[6]"
                title = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, title_xpath))).text
                authors = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, author_xpath))).text
                source = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, source_xpath))).text
                date = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, date_xpath))).text
                database = WebDriverWait(driver, 10).until(
                    EC.presence_of_element_located((By.XPATH, database_xpath))).text
                # 点击条目
                title_list[i].click()
                # 获取driver的句柄
                n = driver.window_handles
                # driver切换至最新生产的页面
                driver.switch_to.window(n[-1])
                time.sleep(3)
                # 开始获取页面信息
                title = WebDriverWait(driver, 10).until(EC.presence_of_element_located(
                    (By.XPATH, "/html/body/div[2]/div[1]/div[3]/div/div/div[3]/div/h1"))).text
                authors = WebDriverWait(driver, 10).until(EC.presence_of_element_located(
                    (By.XPATH, "/html/body/div[2]/div[1]/div[3]/div/div/div[3]/div/h3[1]"))).text
                institute = WebDriverWait(driver, 10).until(EC.presence_of_element_located(
                    (By.XPATH, "/html/body/div[2]/div[1]/div[3]/div/div/div[3]/div/h3[2]"))).text
                abstract = WebDriverWait(driver, 10).until(
                    EC.presence_of_element_located((By.CLASS_NAME, "abstract-text"))).text
                try:
                    keywords = WebDriverWait(driver, 10).until(
                        EC.presence_of_element_located((By.CLASS_NAME, "keywords"))).text[:-1]
                    cssci = WebDriverWait(driver, 10).until(
                        EC.presence_of_element_located((By.XPATH, "/html/body/div[2]/div[1]/div[3]/div/div/div[1]/div[1]/a[2]"))).text
                except:
                    keywords = '无'
                    cssci = 'NULL'
                url = driver.current_url
                # 获取下载链接
                # link = WebDriverWait( driver, 10 ).until( EC.presence_of_all_elements_located((By.CLASS_NAME  ,"btn-dlcaj") ) )[0].get_attribute('href')
                # link = urljoin(driver.current_url, link)

                # 写入文件
                res = f"{count}\t{title}\t{authors}\t{cssci}\t{institute}\t{date}\t{source}\t{database}\t{keywords}\t{abstract}\t{url}".replace(
                        "\n", "") + "\n"
                print(res)
                # with open(f'CNKI_{theme}.tsv', 'a', encoding='gbk') as f:
                #     f.write(res)
                count += 1
                if count > papers_need:
                    break
            except:
                print(f" 第{count} 条爬取失败\n")
                # 跳过本条,接着下一个
                continue
            finally:
                # 如果有多个窗口,关闭第二个窗口, 切换回主页
                n2 = driver.window_handles
                if len(n2) > 1:
                    driver.close()
                    driver.switch_to.window(n2[0])
                # 计数,判断需求是否足够
                # count += 1
        if count > papers_need:
            break
        else:
            # 切换到下一页
            WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//a[@id='PageNext']"))).click()


def webserver(theme):
    # get直接返回,不再等待界面加载完成
    desired_capabilities = DesiredCapabilities.EDGE
    desired_capabilities["pageLoadStrategy"] = "none"

    # 设置微软驱动器的环境
    options = webdriver.EdgeOptions()
    # 设置chrome不加载图片,提高速度
    options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})

    # 创建一个微软驱动器
    driver = webdriver.Edge(options=options)

    # 设置所需篇数
    papers_need = 41

    res_unm = int(open_page(driver, theme))

    # 判断所需是否大于总篇数
    papers_need = papers_need if (papers_need <= res_unm) else res_unm
    return driver, papers_need, theme


if __name__ == "__main__":
    # 输入需要搜索的内容
    # theme = input("请输入你要搜索的期刊名称:")
    print('1')
    theme = "中国人口·资源与环境"
    driver, papers_need, theme = webserver(theme)
    print("所需篇数: ", papers_need)
    crawl(driver, papers_need, theme)
    # 关闭浏览器
    driver.close()

踩过的坑

网页加载太慢导致元素查找出错

网络并不是可靠的,我在调试程序的时候往往出现网页加载过慢导致元素查找出错

  • 第一步:设置 get 直接返回,不需要等待页面加载完成
desired_capabilities = DesiredCapabilities.EDGE
desired_capabilities["pageLoadStrategy"] = "none"
  • 第二步:

在需要等待网页加载完全之后才能执行下一步骤的地方加上 time.sleep() 方法休眠几秒,既可以等待页面加载,也可以防止爬取太快被封IP

代码逻辑出错导致爬取不了 20 倍页数的第 20 条文献信息

刚开始写的时候,逻辑不够准确,导致第20页、40页、60页(20整数倍)的第20条文献爬取不了

后面加了层判断:

if count % 20 != 0:
	term = count % 20  # 本页的第几个条目
else:
	term = 20 # 本页的第20个条目
Python爬虫抓取科学论文摘要和作者信息的完整教程
2201_76125393的博客
09-17 663
科学论文是科研和学术界的重要资源,研究者和学生需要不断获取最新的研究成果和信息Python作为一门强大的编程语言,提供了出色的爬虫工具,可以帮助我们自动抓取科学论文的摘要和作者信息。本文将为你提供一个清晰的思路和Python示例,教你如何创建一个论文信息爬虫,用于抓取科学论文的摘要和作者信息
python抓取文献关键信息,python爬虫——使用selenium爬取知网文献相关信息
weixin_39623355的博客
03-26 4191
python爬虫——使用selenium爬取知网文献相关信息写在前面:本文章限于交流讨论,请不要使用文章的代码去攻击别人的服务器如侵权联系作者删除文中的错误已经修改过来了,谢谢各位爬友指出错误在你复制本文章代码去运行的时候,请设置延迟,给自己留一条后路转载请注明来源,谢谢1. 先看爬取的效果2.知网的反爬虫手段很强,反正我爬取pc端的时候,用selenium爬取获取不到源代码,真是气人,后来换成手...
使用PythonSelenium 爬取CSDN 博客排行榜数据 附源码
最新发布
m0_74972192的博客
08-03 2240
通过这篇博客,我们学习了如何使用PythonSelenium和BeautifulSoup爬取CSDN博客页面上的特定数据。我们详细介绍了每个步骤的实现方法,并提供了完整的代码示例。希望这篇博客对你有所帮助!
python爬虫爬取文献数据
m0_66526403的博客
05-25 4450
文章利用python,安装Selenium工具爬取知网数据
爬虫推特数据分析的外文文献_科研人必备:一个工具搞定文献查阅、数据分析、模型搭建...
weixin_39938724的博客
11-14 736
发表论文,是每个科研人的必经之路!你想要毕业、拿奖金、评职称、争取资金、争取项目,必须发表论文。跟论文打交道的过程足以写成一本20万字的“爱恨情仇史”了。从选题开始,到大量查阅文献,做调查或者做实验、做分析、有的甚至要建模......在写的过程中,也要不断完善Introduction、experiental、section......最后文章成型,然后争取发表paper。 ...
python网络爬虫文献综述_Python网络爬虫教程:知乎爬虫案例
weixin_39927848的博客
11-26 190
#!/usr/bin/env python#-*- coding:utf-8 -*-from scrapy.contrib.spiders importCrawlSpider, Rulefrom scrapy.selector importSelectorfrom scrapy.contrib.linkextractors.sgml importSgmlLinkExtractorfrom scra...
python参考文献
07-27
python参考文献,是你学习python的指南针。
python实现基于selenium的自动化知网文献爬虫源码+文档说明.zip
05-09
python实现基于selenium的自动化知网文献爬虫源码+文档说明.zippython实现基于selenium的自动化知网文献爬虫源码+文档说明.zippython实现基于selenium的自动化知网文献爬虫源码+文档说明.zippython实现基于selenium...
基于selenium的自动化知网文献爬虫python源码.zip
09-01
基于selenium的自动化知网文献爬虫python源码.zip基于selenium的自动化知网文献爬虫python源码.zip基于selenium的自动化知网文献爬虫python源码.zip基于selenium的自动化知网文献爬虫python源码.zip基于selenium的...
基于selenium的自动化知网文献爬虫python源码+运行说明(课程大作业).zip
07-25
基于selenium的自动化知网文献爬虫python源码+运行说明(课程大作业).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机...
Python爬虫使用selenium抓取网站数据
weixin_53185859的博客
12-08 1413
使用selenium抓取网站数据,,保存到本地或者数据库,涉及模拟登录,由口切换,无头模式等等 想问问这个咋做 上课没学懂,现在期末临时抱佛脚
使用selenium功能写的爬取国外经济学期刊摘要相关信息的code
10-20
selenium + python写的爬虫,可以用来爬取国外经济学期刊的相关信息,比如标题,时间,作者和摘要之类的信息。 这样查看国外文献时能省下不少时间,有兴趣的同学可以参考下。
基于Python下的爬虫综述及应用.pdf
05-16
基于Python下的爬虫综述及应用
Python爬虫:编写简单爬虫之新手入门
xixi20200的博客
10-09 238
最近整理了一下python的基础知识,大家一般对“爬虫”这个词,一听就比较熟悉,都知道是爬一些网站上的数据,然后做一些操作整理,得到人们想要的数据,但是怎么写一个爬虫程序代码呢?相信很多人是不会的,今天写一个针对新手入门想要学习爬虫的文章,希望对想要学习的你能有所帮助~~废话不多说,进入正文! 一、准备工作 1、首先代码使用python3.x编写的,要有一个本地的python3环境。 python下载地址页面:https://www.python.org/downloads/release/pytho
Python爬虫批量下载文献
weixin_50097774的博客
11-26 7515
最近在看NeurIPS的文章,但是一篇篇下载太繁琐,希望能快速批量下载下来。 于是想到了之前一直听说的python爬虫,初次学着弄一下。 参考了python爬虫入门教程:Python爬虫入门教程:超级简单的Python爬虫教程; 用到了requests,BeautifulSoup,urllib.request包 先放最终运行的程序: 结果程序 import requests import pandas as pd from bs4 import BeautifulSoup from urllib.r.
python如何爬取sci论文_使用python爬取MedSci上的期刊信息
weixin_39836898的博客
11-30 1214
使用python爬取medsci上的期刊信息,通过设定条件,然后获取相应的期刊的的影响因子排名,期刊名称,英文全称和影响因子。主要过程如下:首先,通过分析网站http://www.medsci.cn/sci的交互过程。可以使用谷歌或火狐浏览器的“审查元素-->Network”,然后就可以看到操作页面就可以看到网站的交互信息。当在网页上点击“我要查询”时,网页会发送一个POST消息给服务器,然后,服...
Python爬虫——Selenium获取网页数据方面的使用
热门推荐
m0_73716246的博客
09-07 1万+
Selenium 可以实现,它本身是一款自动化测试工具,可以打开浏览器,像人一样操作浏览器,人们可以从 Selenium 中直接提取到网页上的各种信息,因为网页信息对于 Selenium 来说是透明的,其本质就是运行一个浏览器。selenium使用便捷,易于编写,可以屏蔽许多js加密、解密问题,但是其运行速度较慢,且一些网站会针对通过 selenium 方法进行的访问做反爬,所以使用的时候并不是万能的。打开浏览器,这里可以选择年份(需要点击),这是通过网页的 select 标签存放的。
selenium爬取知网信息(二)
m0_60659514的博客
01-28 398
六、修改每页检索结果显示(由默认20项改为50项)四、选择检索方式并传入关键词检索。
python 文献检索_学习帖|大神是如何用Python高效解决文献搜索和数据处理!?...
weixin_35870524的博客
02-03 2270
#研究生期间,你被逼得有多绝望?◆ 写论文一起床一睁眼:今天一定要写完这一部分一支烟一杯茶:一个introduction写一天一躺下一闭眼:今天都写了些什么玩意◆ 面对老板交稿前脑补各种挨批场景,没想到最终他风轻云淡说一句:换个题目吧◆ Peer pressure当看到室友在写论文时,我:输人不输势!这应该就是大多数科研人的日常了吧。前几天,我一师弟还在跟我吐槽:他一刚入门就没有人带,从课题到实验...
写文章

热门文章

  • 超详细 | CentOS stream 安装教程(CentOS 8系列可参考) 31256
  • 《干货篇 | Nginx 我还真不信你学不会(中)》 13429
  • Python爬虫实战(3) | 爬取一周的天气预报信息 10469
  • yum提示 “Cannot retrieve metalink for repository: epel/x86_64” 的解决方法 10284
  • 运维排查篇 | 访问nginx出现403错误 7680

分类专栏

  • 技术 58篇
  • 面试 5篇

最新评论

  • 计算机网络那些事之 MTU 篇 pt.2

    james旸爷: 关注博主即可阅读全文。。。。

  • 【CVE-2024-21626】容器逃逸漏洞修复

    qq_23856053: 不重启也行吗

  • 【CVE-2024-21626】容器逃逸漏洞修复

    普通网友: 支持一下,细节很到位!【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • selenium 根据【关键词】获取知网文献信息

    咸鱼Linux运维: 代码逻辑有问题吧,个性化弹窗无视他就行了,或者自己手动点击关闭一下

  • selenium 根据【关键词】获取知网文献信息

    w5414188: 怎么忽略啊 弹窗已出现,就停止检索了

最新文章

  • 一个能够生成 Markdown 表格的 Bash 脚本
  • K8S 中的 CRI、OCI、CRI shim、containerd
  • 聊聊 JSON Web Token (JWT) 和 jwcrypto 的使用
2024年25篇
2023年93篇
2022年37篇
2021年48篇
2020年4篇

目录

目录

评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼Linux运维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

深圳SEO优化公司东至网站优化哪家正规青岛智能营销网站优化网站首页优化方案奉化外贸网站优化企业网站seo关键词优化长沙网站优化包括什么莆田网站运营优化公司宁晋县网站关键词优化沁阳优化网站排名找哪家网站不会优化打理怎么办壹起航标签怎么设置网站优化新网站优化加盟玩具网站优化怎么做漯河优惠网站优化价格临河网站优化哪家好家居网站优化价格成都钢铁网站如何优化惠州网站界面优化seo优化最好用的网站临湘网站优化排名服务好的网站优化专业团队武汉整站网站优化价格新津网站优化潍坊网站推广优化小程序seo网站内部优化原理网站排名优化的影响因素有哪些清远网站优化排名软件如何更好的优化网站网站排名seo优化黄石本地网站优化哪家好歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化