Python爬虫selenium的使用实例爬取知乎首页数据!

网络爬虫之Selenium(可视化)爬虫 前言:今天跟大家分享pathoy之爬虫,pathoy之爬虫技术的用处范围非常广泛以及非常强大的一门技术。在介绍爬虫之前,可以先跟大家讲讲pathoy这一门技术。 一、Pathoy的简介 二、pathoy之爬虫介绍 三、爬虫具体案例: ... 阅读详情

1.Selenium简介

Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。我这里使用的是爬取知乎首页文章列表,因查看源码并不是能爬取的html.且查看数据接口,爬取到的数据不是最新的数据,故而使用该框架进行爬取学习。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

2.安装Selenium&chromdriver.exe

安装Selenium 

pip install selenium

下载 chromdriver.exe 

我是把下载的文件放置当前python当前目录下建立个目录,因很多人写的是放python安装目录等等,但是如果你吧代码迁移到其他电脑或者服务器上,又得从新下载放置对的目录。我这里在py程序下建立文件夹把三个系统的全部下载好了,使用爬虫只需调用当前函数即可。

下载地址:国内镜像网站地址 官网

如果调用有问题,假如使用谷歌那也许下载谷歌的chromdriver版本对应不上谷歌内核版本,此坑已踩

import sys
 
def get_driver():
    platform = sys.platform
    if (platform.startswith('win32')):
        return r'./drives/chromedriver.exe'
    elif (platform.startswith('darwin')):
        return r'./drives/chromedriver_mac64'
    else:
        return r'./drives/chromedriver_linux64'
 
browser =webdriver.Chrome(executable_path=get_driver())  #调用Chrome 驱动,生成浏览器对象

测试安装成功与否(此处使用的是谷歌)

from selenium import webdriver
browser=webdriver.Chrome()             
browser.get('http://www.7z72.com/')

3.元素定位

 根据Id定位

driver.find_element_by_id('box')

返回第一个id属性匹配的元素,如果没有元素匹配,会抛出 NoSuchElementException 异常  

 根据Name定位

driver.find_element_by_name("username")

返回第一个name属性匹配的元素, 如果没有元素匹配,会抛出 NoSuchElementException 异常

 XPath定位  Xpath学习

#id是box的div元素
driver.find_element_by_xpath("//div[@id=box]")
# from下的所有input元素中name是username的子元素
driver.find_element_by_xpath("//from[input/@name='username']")
# id是loginForm的from元素下的第一个input
driver.find_element_by_xpath("//form[@id='loginForm']/input[1]")
# name是username的input元素
driver.find_element_by_xpath("//input[@name='username']")
# type是button并且name是btn的input元素
driver.find_element_by_xpath("//input[@name='btn'][@type='button']")
# id是box的from元素下的第4个input
driver.find_element_by_xpath("//form[@id='box']/input[4]")

使用Xpath可以对页面元素进行觉得定位和相对定位。

链接文本定位超链接

driver.find_element_by_link_text("测试") # 通过完整超链接定位
driver.find_element_by_link_text("www.7Z72.com")
driver.find_element_by_partial_link_text("hao") # 通过部分链接定位
driver.find_element_by_partial_link_text("7z72")

返回第一个文本属性匹配的链接, 如果没有元素匹配,会抛出 NoSuchElementException 异常

根据标签名定位

driver.find_element_by_tag_name('span')

class定位

driver.find_element_by_class_name('text_list')

只返回匹配的第一个,无元素匹配,会抛出 NoSuchElementException 异常

css选择器定位

driver.find_element_by_css_selector('div>span.text')

寻找多个元素(下列方法会返回一个list)

find_elements_by_name
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector

私有方法: find_element 和 find_elements

from selenium.webdriver.common.by import By
 
driver.find_element(By.XPATH,'//button[text()="Some Text"]')
driver.find_elements(By.XPATH,'//button')
 
 
Bu类属性:
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
NAME = "name"
TAG_NAME = "tag_name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"

4.爬取知乎首页文章列表实例

因为查看不了源码(所以实例没有使用解析源码来获取数据),以及爬取json不是最新数据并且只有几条,只能学到此方法

爬取,如果有更多好办法爬取看不到源码的以及数据源有限制的可以交流学习。

该网址数据是页面下拉就会加载数据只需要修改模拟下拉前后时间既可拉取更多数据。如果不设置也就只能拉取固定的几条。

from selenium import webdriver #驱动浏览器
import sys
import time
from selenium.common.exceptions import NoSuchElementException  # 定位不到元素错误处理
import json
from fake_useragent import UserAgent
 
# 随机获取User_Agent
def get_fake_User_Agent ():
    ua = UserAgent()
    user_anget = ua.random
    return user_anget
 
headers = {
    'User-Agent': get_fake_User_Agent()
}
 
#  识别系统调出chromedriver所在路径
def  get_driver():
    platform = sys.platform
    if ( platform.startswith('win32') ):
        return r'./drives/chromedriver.exe'
    elif ( platform.startswith('darwin') ):
        return r'./drives/chromedriver_mac64'
    else:
        return r'./drives/chromedriver_linux64'
 
 
browser = webdriver.Chrome(executable_path=get_driver())  # 调用Chrome 驱动,生成浏览器对象
try:
    browser.get('https://juejin.im/',headers=headers)
    time.sleep(5)
    browser.execute_script('window.scrollTo(0,document.body.scrollHeight)') # 模拟下拉
 
    time.sleep(2)
 
    items_list = browser.find_elements_by_xpath('//*[@id="juejin"]/div[2]/main/div/div/div/div/div/div/ul/div/li')
    result = []
    for t in items_list:
        data_list = t.text
        try:
            if t.find_element_by_css_selector(".action-list").text :
                data_name = t.find_element_by_css_selector(".user-popover-box").text
                data_title = t.find_element_by_css_selector(".title").text
                if t.find_element_by_css_selector(".item.like.clickable").text == "":
                    data_like = 0
                else:
                    data_like = t.find_element_by_css_selector(".item.like.clickable").text
                if t.find_element_by_css_selector(".item.comment.clickable").text == "":
                    data_dislike = 0
                else:
                    data_dislike = t.find_element_by_css_selector(".item.comment.clickable").text
                data_link = t.find_element_by_css_selector(".info-row.title-row a").get_attribute("href")
 
                one = {}
                one["data_name"] = data_name
                one["data_title"] = data_title
                one["data_like"] = data_like
                one["data_dislike"] = data_dislike
                one["data_link"] = data_link
                result.append(one)
 
        except NoSuchElementException:
            print("没有找到元素!")
    print('数据下载完毕')
    with open('666666.json', 'w', encoding='utf-8') as file:
        file.write(json.dumps(result, indent=2, ensure_ascii=False))
 
finally:
    browser.close()

得到的数据结果

此文仅供参考学习的简单代码没有其他博主的深入,小白即可入手,如有错误请指出。

 

基于Python +Selenium的爬虫详解 一、selenium简介 由于requests模块是一个不完全模拟浏览器行为的模块,只能爬取到网页的HTML文档信息,无法解析和执行CSS、JavaScript代码,因此需要我们做人为判断; 1、什么是selenium selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法执行javaScript代码的问题。 selenium模块本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器;由于seleniu 阅读详情

相关推荐

爬虫神器Selenium傻瓜教程,看了直呼牛掰

爬虫神器Selenium全攻略,小白看了直呼牛掰!

npm_run_dev__的博客 1万+

Selenium爬虫

判断此定位中的value属性中是否包含text_的内容 text_to_be_present_in_element_value(locator, text_)自动化脚本是由程序去执行的,因此有时候打印的错误信息并不是十分明确。设置的时间单位为秒,例如implicitly_wait(30),意思是超过30秒没有定位到一个元素,程序就会报错抛出异常,期间会一直轮询查找定位元素。判断此定位中是否包含text_的内容,text_to_be_present_in_element(locator, text_)

weixin_51551506的博客 1万+

【网络爬虫】基于Selenium爬取动态网页

目录一、Selenium介绍与配置1.Selenium简介2. Selenium+Python环境配置二、网页自动化测试1.启动浏览器并打开百度搜索2.定位元素三、爬取动态网页的名人名言1. 网页数据分析2. 翻页分析3.爬取数据的存储4. 爬取数据四、爬取京东网站书籍信息五、总结六、参考 一、Selenium介绍与配置 1.Selenium简介   Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。Selenium测试直接运行在浏览器中,可以模拟真实用户的行为。支持的

YangMax1的博客 1万+

Python爬虫基础之Selenium详解

围绕 Selenium 库展开讲解如何使用自动化工具操作浏览器。

程序园@大Null 2万+

python爬虫之使用selenium爬取b站视频信息

前言 在之前提到爬虫时,我想到的步骤大多是: 查找要爬取内容的页面的url,使用requests库获取响应内容 内容为html源码则使用BeautifulSoup等工具解析html源码,得到想要的数据 内容为Json则直接转为Json对象解析 保存数据 但今天我发现了selenium这个工具,selenium是一套完整的web应用程序测试系统,可以用它来模拟真实浏览器进行测试。在爬虫中使用它的...

chenf1999的博客 1万+

python 爬虫实战四:用 selenium 爬取知乎某一问题下所有回答

用 selenium 爬取知乎某一问题下所有回答前言模拟登录动态爬取完整代码效果展示 前言 最近我又重新拾起了爬虫,想实现一下前几次爬虫所没有涉及到的两个点:模拟登录和动态网页爬取,所采用的方法是利用 selenium 这个库,例子是爬取知乎某一问题下所有回答。 模拟登录 很多网站,比如知乎、微博、豆瓣,都需要登录之后,才能浏览某些内容。所以想要爬取这类网站,必须先模拟登录。比较简单的方式是利用这个网站的 cookie。cookie 相当于是一个密码箱,里面储存了用户在该网站的基本信息。在一次登录之后,网站

weixin_43084570的博客 2769

python爬取知乎评论_Python爬虫selenium的使用实例爬取知乎首页数据!

1.Selenium简介Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。我这里使用的是爬取知乎首页文章列表,因查看源码并不是能爬取的html.且查看数据接口,爬取到的数据不是最新的数据,故而使用该框架进行爬取学习。PS:如有需要Python学习资料的小伙伴可以加点击下方链接自...

weixin_39832628的博客 544

python抓取文献关键信息,python爬虫——使用selenium爬取知网文献相关信息

python爬虫——使用selenium爬取知网文献相关信息写在前面:本文章限于交流讨论,请不要使用文章的代码去攻击别人的服务器如侵权联系作者删除文中的错误已经修改过来了,谢谢各位爬友指出错误在你复制本文章代码去运行的时候,请设置延迟,给自己留一条后路转载请注明来源,谢谢1. 先看爬取的效果2.知网的反爬虫手段很强,反正我爬取pc端的时候,用selenium爬取获取不到源代码,真是气人,后来换成手...

weixin_39623355的博客 4575

python在手机使用webdriver.chromns_Python爬虫selenium的使用实例爬取知乎首页数据!...

如果调用有问题,假如使用谷歌那也许下载谷歌的chromdriver版本对应不上谷歌内核版本,此坑已踩import sysdef get_driver():platform = sys.platformif (platform.startswith('win32')):return r'./drives/chromedriver.exe'elif (platform.startswith('darw...

weixin_42184924的博客 357

Python 网络爬虫进阶:突破数据采集的边界

在成功踏入 Python 网络爬虫的入门之境后,我们犹如初窥宝藏的探险家,领略到了数据采集世界的奇妙与潜力。而此刻,进阶之路在脚下徐徐展开,它将引领我们深入这片领域的更深处,挖掘出更为强大和精妙的爬虫技艺,去征服那些更为复杂和富有挑战性的数据高峰。

m0_74620645的博客 3207

五分钟学会Python网络爬虫

但不管怎样,爬虫技术是无罪的,还是值得我们开发人员去学习了解一下的。在学习之前,我们还是要先了解一下相关概念。 什么是爬虫 网络爬虫:又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。 大数据时代,要进行数据分析,首先要有数据源,可数据源从哪里来,花钱买,没预算,只能从其它网站就行抓取。 细分下来,业内分为两类:爬虫和反爬虫。 反爬虫:顾名思义,就是防止你来我网站或APP上做爬虫的。 爬虫工程师和反爬虫工程师是一对相爱相杀的小伙伴,经常因为对方要加班写代码,

python588的博客 2353

Python 网络爬虫及数据可视化

目录 1项目背景 2 1.1 Python的优势 2 1.2 网络爬虫 2 1.3 数据可视化 2 1.4 Python环境介绍 2 1.4.1 简介 2 1.4.2 特点 3 1.5 扩展库介绍 3 1.5.1 安装模块 3 1.5.2 主要模块介绍 3 ① pandas模块 3 ② requests模块 4 ③ bs4模块 4 ④ selenium模块 4 ⑤ matplotlib模块 4 ⑥ seaborn模块 4 ⑦ pyecharts模块 5 2需求分析 5 2.1 网络爬虫需求 5 2.2 数据

gezongbo的博客 4万+

[Python从零到壹] 十.网络爬虫之Selenium爬取在线百科知识万字详解(NLP语料构造必备技能)

欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。前一篇文章讲述了Selenium基础技术,涉及基础入门、元素定位、常用方法和属性、鼠标操作、键盘操作和导航控制。本文将结合具体实例进行深入地分析,通过三个基于Selenium技术的爬虫,爬取Wikipedia、百度百科和互动百科消息盒的例子,从实际应用出发来学习利用。基础性文章,希望对您有所帮助。

杨秀璋的专栏 8956

python网络爬虫爬取静态网页

网络爬虫又称网页蜘蛛、网络机器人,是一种按照一定的规则、自动请求万维网网站并提取网络数据的程序或脚本。如果说网络像一张网,那么爬就是网上的一只小电子,在网上爬行的过程中遇到了数据,就把它爬取下来。网络爬虫的常用功能:如图所示。获取大量数据,用来做数据分析公司项目的测试数据,公司业务所需数据Python做爬虫优势1、Python :请求模块、解析模块丰富成熟,强大的Scrapy网络爬虫框架2、PHP :对多线程、异步支持不太好3、JAVA:代码笨重,代码量大。

m0_74198026的博客 3272

DFT实训教程笔记2(bibili版本)- Scan synthesis practice

文章目录Scan synthesis practice 本博文是博主记录DFT实训教程的笔记版本,此笔记并没有对所有的知识进行记录,仅仅以自身的认知水平,来记录了一些部分笔记并加上了自己的理解。 Scan synthesis practice How to design scan clock structure? 假设一块chip里面有好几十个clock domain,如果每一个clock domain都用一个scan clock虽然会非常清晰,但是IO数目肯定不够用。 clock group: 1、no

ciscomonkey的博客 9082

别再为格式发愁:safetensors转GGUF的三种高效方法及Ollama集成对比

本文详细介绍了将safetensors格式转换为GGUF格式的三种高效方法,包括llama.cpp原生转换、GGUF官方工具链和Transformers中转方案,并对比了它们在Ollama集成中的表现。文章还提供了实际项目中的踩坑经验和性能调优建议,帮助开发者快速掌握模型转换技术。

weixin_42651281的博客 640

【爬虫】基于 Selenium 的 Python 淘宝评论爬取

随着电子商务的发展,消费者评论已经成为购买决策中重要的参考因素之一。如何高效地抓取并分析大量的在线评论,成为了数据分析领域的重要课题。本文将探讨如何使用 Selenium 和 Python 自动化工具抓取网页中的评论数据,并结合技术实现分析过程。我们将详细介绍相关的抓取原理,如何利用 Selenium 库编写 Python 程序来实现这一目标,以及每段代码的详细解析。本篇文章不仅适合初学者学习如何使用 Selenium 进行网页抓取,也对有一定编程经验的读者提供了详细的技

2303_77200324的博客 5907

DMR对讲机的基本概念理解

刚刚入手DMR对讲机,尚未成功联通。国内互联网上能找到的资料很少,大多数也都是一些DMR协议介绍之类的玩意,对实际操作没有指导意义。以下全部是这几天在网上研究各种资料得出的个人思考,如有错误请斧正。 相比与模拟通讯系统,DMR将语音信号转换为包的形式进行收发。将DMR对比成TCP/IP系统会更容易理解。 一般DMR对讲机都支持模数双通,说明DMR应该使用了跟FM同样的无线AP组件,只在解码上有区别。对讲机先使用DMR进行数字解码,解码成功则说明是数字信号,不成功则使用模拟方式再次进行解码。可以对等理解为

1万+

python爬虫selenium的使用实例爬取知乎首页数据

1.Selenium简介 Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。我这里使用的是爬取知乎首页文章列表,因查看源码并不是能爬取的html.且查看数据接口,爬取到的数据不是最新的数据,故而使用该框架进行爬取学习。 2.安装Selenium&chromdriver.exe 安装Selenium pip install selenium 下载chromdrive..

糖果云专栏 1170

【Flink cdc】Data row is smaller than a column index, internal schema representation is probably xxx

翻译一下:当scan.startup.mode=EARLIEST_OFFSET时,如果在最早的offset之后表结构有过变化就无法支持。原因应该是在binlog 的earliest_offset之后,表结构被修改过。我的解决方案:source配置中使用。mysql source配置使用。,以时间戳为消费依据。

integrity 2085

浅析MOS管导通过程及RC吸收电路设计要点

RC吸收电路 米勒电容 MOS导通过程

liangbo1999的博客 2万+

如何使用python爬虫selenium爬取知网信息以及对数据进行本地化储存和mysql数据库储存

使用python selenium对知网进行爬取,以及对爬取的数据进行储存(学的不好,一学期刚入门,凑合看吧)

weixin_48846320的博客 3449

携程机票数据爬取实战:使用 Python 获取携程网机票信息

通过本篇博客,我们详细介绍了如何使用 Python 爬取携程网的机票信息,涉及了静态网页爬取(使用 Requests 和 BeautifulSoup)和动态网页爬取(使用 Selenium)两种方法。通过获取的数据,我们不仅能够进行票价分析,还可以构建更为复杂的预测模型或趋势分析工具。爬虫技术不仅能够帮助我们收集有价值的数据,还能够为商业决策提供数据支持。在实际应用中,我们可以结合更多的分析方法,如自然语言处理、图像处理等,进一步提升数据的价值。

2201_76125261的博客 1657
上一篇: Python助力期末!期末不挂科!
下一篇: 被迫营业的网店订单管理系统!表弟的毕设!这也太简单了!
pythonlaodi
博客等级 码龄6年 286粉丝 244原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值