首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python3 爬虫第二步Selenium 使用简单的方式抓取复杂的页面信息

Selenium 简介 该系列专栏上一篇爬虫文章点击这里。 网站复杂度增加,爬虫编写的方式也会随着增加。使用Selenium 可以通过简单的方式抓取复杂的网站页面,得到想要的信息。...Selenium 是操作浏览器进行自动化,例如自动化访问网站,点击按钮,进行信息采集,对比直接使用bs4 抓取信息,Selenium抓取速度是有很大缺陷,但是如果抓取页面不多,页面复杂,使用Selenium...在html,大部分有特殊作用的元素会赋予一个id,搜索需要填写的是百度搜索关键字的文本框,将鼠标移动到文本框,对准文本框点击鼠标右键,点击检查可以查看元素。 ?...那么我们每一页都获取第一个结果,这时只需要自动点击下一页后获取即可。 首先得到下一页按钮的元素对象: ?...并且发现下一页按钮的 XPath也发生了改变,变成了: //*[@id="page"]/div/a[11] 完整代码如下: from selenium import webdriver import time

2.1K20

使用Selenium爬取淘宝商品

这里不直接点击“下一页”的原因是:一旦爬取过程中出现异常退出,比如到50退出了,此时点击“下一页,就无法快速切换到对应的后续页面了。...此外,在爬取过程,也需要记录当前的页码数,而且一旦点击“下一页”之后页面加载失败,还需要做异常检测,检测当前页面是加载到了第几页。整个流程相对比较复杂,所以这里我们直接用跳转的方式来爬取页面。...当我们成功加载出某一页商品列表,利用Selenium即可获取页面源代码,然后再用相应的解析库解析即可。这里我们选用pyquery进行解析。下面我们用代码来实现整个抓取过程。 5....随后,调用send_keys()方法将页码填充到输入框,然后点击“确定”按钮即可。 那么,怎样知道有没有跳转到对应的页码呢?我们可以注意到,成功跳转某一页后,页码都会高亮显示,如下图所示。 ?...本节,我们用Selenium演示了淘宝页面的抓取。利用它,我们不用去分析Ajax请求,真正做到可见即可爬。 崔庆才 静觅博客博主,《Python3网络爬虫开发实战》作者

3.6K70
您找到你想要的搜索结果了吗?
是的
没有找到

Python Selenium 爬虫淘宝案例

q=iPad,呈现的就是第一页的搜索结果: 在页面下方,有一个分页导航,其中既包括前 5 的链接,也包括下一页的链接,同时还有一个输入任意页码跳转的链接。...这里不直接点击 “下一页” 的原因是:一旦爬取过程中出现异常退出,比如到 50 退出了,此时点击 “下一页,就无法快速切换到对应的后续页面了。...此外,在爬取过程,也需要记录当前的页码数,而且一旦点击 “下一页” 之后页面加载失败,还需要做异常检测,检测当前页面是加载到了第几页。整个流程相对比较复杂,所以这里我们直接用跳转的方式来爬取页面。...当我们成功加载出某一页商品列表,利用 Selenium 即可获取页面源代码,然后再用相应的解析库解析即可。这里我们选用 pyquery 进行解析。下面我们用代码来实现整个抓取过程。 5....随后,调用 send_keys() 方法将页码填充到输入框,然后点击 “确定” 按钮即可。 那么,怎样知道有没有跳转到对应的页码呢?我们可以注意到,成功跳转某一页后,页码都会高亮显示。

39422

24行代码,轻松赚取400元,运用Selenium爬取39万条数据

可以看到,数据有19733,每页20条,一共39万多条信息 通过初步的尝试和分析,网站具有一定的反爬机制,点击下一页后,网页并不会整体刷新,替换的只是其中的表格,查看网页源代码,表格部分的来源也是加密的...环境搭建:1、pip install selenium 2、下载对应“XX浏览器驱动”,解压后的文件放在Python解释器(对应虚拟环境),下面以谷歌浏览器驱动为例子。 解压后的文件。...在pycharm可以看到配置的环境在哪里。 最后放置,记得检查驱动命名后面是否有数字等符号,记得去掉。...xpath click_next = web.find_element_by_xpath(xpath_next).click() #定位下一页的xpath time.sleep(3)...# 休息3秒 #同上,作用是最后一页的内容的抓取与写入 nr_ex = '//*[@id="tableBody"]' ex_diyiye = web.find_element_by_xpath(nr_ex

94720

Python爬取东方财富网上市公司财务报表

可以看到只有一个Ajax请求,点击下一页也并没有生成新的Ajax请求,可以判断该网页结构不是常见的那种点击下一页或者下拉会源源不断出现的Ajax请求类型,那么便无法构造url来实现分页爬取。 ?...爬取单表格 我们先以2018年报的利润表为例,抓取该网页的第一页表格数据,网页url:http://data.eastmoney.com/bbsj/201806/lrb.html ?...这里,我们测试一下前4跳转效果,可以看到网页成功跳转了。下面就可以对每一页应用第一页爬取表格内容的方法,抓取一页的表格,转为DataFrame然后存储到csv文件中去。 ? 4.4....将该链接应用到前面的爬虫,就可以爬取相应的报表内容了。 另外,除了从第一页开始爬取到最后一页的结果以外,我们还可以自定义设置想要爬取的页数。比如起始页数从第1开始,然后爬取10。...选择爬取页数范围 2start_page = int(input('请输入下载起始页数:\n')) 3nums = input('请输入要下载的页数,(若需下载全部则按回车):\n') 4# 确定网页最后一页

13.5K46

爬虫 | selenium之爬取网易云音乐歌曲评论

问:那么是否有办法绕过这机制,直接获取网站数据? 答:有的。使用 Selenium 库模拟浏览器行为来抓取网站数据,达到事半功倍的效果。...3)爬取第一页面的评论的数据,然后存储到数据库。 4)利用 Selenium 模拟点击下一页按钮,再继续爬取该页面的评论数据,并存储到数据库。 5)一直循环点击,直到所有分页的数据都被爬取完成。...,首先抓取第 1 的评论数据。...print('成功插入', len(data_list), '条数据') except Exception: print('插入数据出现异常') 模拟点击“下一页...模拟人为浏览 time.sleep(random.randint(8, 12)) current += 1 def go_nextpage(brower): """ 模拟人为操作, 点击【下一页

1.9K22

爬取《Five Hundred Miles》在网易云音乐的所有评论

问:那么是否有办法绕过这机制,直接获取网站数据? 答:有的。使用 Selenium 库模拟浏览器行为来抓取网站数据,达到事半功倍的效果。...3)爬取第一页面的评论的数据,然后存储到数据库。 4)利用 Selenium 模拟点击下一页按钮,再继续爬取该页面的评论数据,并存储到数据库。 5)一直循环点击,直到所有分页的数据都被爬取完成。...,首先抓取第 1 的评论数据。...print('成功插入', len(data_list), '条数据') except Exception: print('插入数据出现异常') 模拟点击“下一页...模拟人为浏览 time.sleep(random.randint(8, 12)) current += 1 def go_nextpage(brower): """ 模拟人为操作, 点击【下一页

77220

【保姆级教程】爬取网站上“气候变化”关键词新闻个数

二、定义爬取的目标网站和关键词 应用selenium进行数据爬取,最头疼的是很多时候都会提示Chrome版本不匹配报错,需要重新下载对应版本。 本文应用代码直接安装Chrome,可以避免上述情况。...('btn-next').click() #点击下一页 四、批量获取所有标题 最后写循环获取所有标题。...在上文中介绍了获取单标题和点击下一页的代码,所以获取全量标题的关键是:控制循环在获取到所有页面信息自动退出。...要想实现该功能,可在代码应用try函数,如果点击下一页没有报错,说明循环还未结束,如果报错,即到了最后一页,用break函数退出循环即可。...至此,应用Python批量爬取网站上“气候变化”关键词新闻个数已讲解完毕,想了解更多Python的函数,可以翻看公众号“学习Python”模块相关文章。

9410

Selenium 抓取淘宝商品

,也包括下一页的链接,同时还有一个输入任意页码跳转的链接,如图所示: [1502092723456_606_1502092724898.jpg] 在这里商品搜索结果一般最大都为100,我们要获取的每一页的内容...在这里我们不直接点击下一页的原因是,一旦爬取过程中出现异常退出,比如到了50退出了,我们如果点击下一页就无法快速切换到对应的后续页面,而且爬取过程我们也需要记录当前的页码数,而且一旦点击下一页之后页面加载失败...当我们成功加载出某一页商品列表,利用Selenium即可获取页面源代码,然后我们再用相应的解析库解析即可,在这里我们选用PyQuery进行解析。...构造出URL之后我们就需要用Selenium进行抓取了,我们实现如下抓取列表的方法: from selenium import webdriver from selenium.common.exceptions...它会等待某一文本出现在某一个节点里面即返回成功,在这里我们将高亮的页码节点对应的CSS选择器和当前要跳转的页码通过参数传递给这个等待条件,这样它就会检测当前高亮的页码节点里是不是我们传过来的页码数,如果是,那就证明页面成功跳转到了这一页

2.8K10

Python下利用Selenium获取动态页面数据

来源:http://www.51testing.com   利用python爬取网站数据非常便捷,效率非常高,但是常用的一般都是使用BeautifSoup、requests搭配组合抓取静态页面(即网页上显示的数据都可以在...打开网站后,可以看到需要爬取的数据为一个规则的表格,但是有很多。 ?   在这个网站,点击下一页页面的url不发生变化,是通过执行一段js代码更新页面的。...因此本文思想就是利用selenium模拟浏览器进行点击,点击“下一页”后页面数据进行更新,获取更新后的页面数据即可。...driver.find_element_by_link_text方法来实现的,这是因为在此网页,这个标签没有唯一可标识的id,也没有class,如果通过xpath定位的话,第一页和其他的xpath路径又不完全相同...selenium的功能非常强大,用在爬虫上能够解决很多一般爬虫解决不了的问题,它可以模拟点击、鼠标移动,可以提交表单(应用:登陆邮箱账号、登陆wifi等,网上有很多实例,本人暂时还没有尝试过),当你遇到一些非常规的网站数据爬取起来非常棘手

3.1K30

同事半个月都没搞懂selenium,我半个小时就给他整明白!顺手秀了一波爬淘宝的操作

因为工作需要,同事刚开始学python,学到selenium这个工具半个月都没整明白,因为这个令他头秃了半个月,最后找到我给他解答。 所以我用一个淘宝爬虫实例给他解释了一遍,不用一个小时他就搞懂了。...---- 五、爬取页面 在搜索框搜索之后会出现所需要的商品页面详情,但是不只是爬取一页,是要不断的下一页爬取多的商品信息。...) # 解析数据 parse_html(browser.page_source) # 设置显示等待 等待下一页按钮 wait = WebDriverWait...By.XPATH, '//a[@class="J_Ajax num icon-tag"]'))) time.sleep(1) try: # 通过动作链,滚动到下一页按钮元素处...move_to_element(write).perform() except NoSuchElementException as e: print("爬取完毕,不存在下一页数据

55830

读者投稿:selenium抓取bilibili拜年祭《千里之外》的评论

bilibili 2019年拜年祭的《千里之外》很好看,于是我想用《python爬虫开发与入门实战》第七章的爬虫技术抓取一下评论。...因此我决定用selenium抓取一下评论, 第一页抓取只有进入该页面,然后定位到具体元素就可以爬取下来,但是抓取的时候,需要先等该元素加载好再去抓取,我将等待和抓取逻辑封装了一下,定义出一个函数方便使用...点击下一页,发现页面没有刷新,可以知道肯定是用ajax异步读取数据并加载进来了,因此需要定位到“下一页”的按钮,然后进入下一页后再抓取,可以用 wait...until语法先等按钮加载完成,再点击: def...next_page_path)) ) next_page = driver.find_element_by_xpath(next_page_path) next_page.click() 循环抓取直到最后一页的逻辑可以写成这样...,完整代码如下,你会发现我对其中的几个函数用了 retry装饰器,通过重复增加成功率,抓取的数据我放在一个字典里 self.comments,字典的key是页数,字典的值是一个存储该页评论的列表,如果重新要抓取一页

66320

房天下数据爬取及简单数据分析

明确了目的以后就该去寻找这些数据的出处,也就是网站,由于太原互联网环境欠发达,所以好多房产APP上都没有太原,有的APP有,但是也只有几十家楼盘,最后在搜索的过程锁定了房天下。...模拟浏览器进行下一页的点击。...上面两个截图一个是17,一个是9对应的url,我们发现在参数上并没有明确的规律,看来利用修改参数的方法是行不通了,只能使用selenium,在使用selenium实现的过程,我无意间发现了事情:...在进行元素审查,我发现页面对应的href,即链接网站是有规律的,而且不是那么杂乱无章的,我就把href里面的对应链接粘贴到搜索框,发现真能跳转到相应的页面,看来是不需要使用selenium了,用修改参数的方法进行循环即可...,而实际是不同的,说明每一页抓取到的个别指标有缺失。

1.6K81

左手用R右手Python系列——动态网页抓取selenium驱动浏览器

我在今年年初写过一个实习僧网站的爬虫,那个是使用R语言中另一个基于selenium驱动的接口包——Rwebdriver来完成的。...实习僧招聘网爬虫数据可视化 当时技术不太成熟,思路也比较幼稚,我使用了导航器硬生生的遍历了500内容,虽然最后也爬完了所有数据,但是耗时较长(将近40分钟),效率比较低。...因为涉及到自动化点击操作,Chrome浏览器倒腾一下午硬是在点击环节出故障,找到了原因,因为拉勾网页面很长,而下一页按钮不在默认视窗范围内,使用了js脚本控制滑动条失败,原因不明,看到有人用firefox...="30"){ #如果页面未到尾部,则点击下一页 remDr$findElement('xpath','//div[@class="pager_container...= '30': #如果未到达页面尾部,则点击下一页: driver.find_element_by_xpath('//div[@class="pager_container

2.2K100

python 爬虫与反爬虫

验证码验证:当某一用户访问次数过多后,就自动让请求跳转到一个验证码页面,只有在输入正确的验证码之后才能继续访问网站 解决办法:python可以通过一些第三方库(pytesser,PIL)来对验证码进行处理...案例:拉勾网打开拉勾网的某一个工作招聘,可以看到许许多多的招聘信息数据,点击下一页后发现页面框架不变化,url地址不变,而其中的每个招聘数据发生了变化, 通过chrome开发者工具抓包找到了一个叫请求了一个叫做...filterOption=3的网页,打开改网页发现为第二真正的数据源, 通过仿造请求可以抓取一页的数据。...解决办法:将浏览器返回的js代码放在一个字符串,然后利用nodejs对这段代码进行反压缩,然后对局部的信息进行解密,得到关键信息放入下一次访问请求的头部。...,封装在一个字典, 将其通过requests的jar模块转换成cookiejar放入下一次访问的request中就可以持续访问, 因为cookie的时效大约一个小时左右。

2.5K42

Selenium自动化|爬取公众号全部文章,就是这么简单

Selenium常常是面对一个奇怪反爬网站无从入手的最后一道防线。当然也有缺点:操作均需要等待页面加载完毕后才可以继续进行,所以速度要慢,效率不高。...跳转了下一页后可以发现不是所有的文章都由“早起Python”公众号推送。 ? 另外只能获取前10100条的结果,中间需要微信扫码登录 ?...代码检测登录是否完成(可以简化为识别“下一页”按钮是否出现),如果登录完成则继续从11遍历到最后一页(没有“下一页”按钮) 由于涉及两次遍历则可以将解析信息包装成函数 num = 0 def get_news...True检测登录是否成功,是否出现了下一页按钮,如果出现则跳出循环,点击“下一页”按钮并继续后面的代码,否则睡3秒后重复检测 driver.find_element_by_name('top_login...然后就是重新遍历文章了,由于不知道最后一页是第几页可以使用while循环反复调用解析页面的函数半点击“下一页”,如果不存在下一页则结束循环 while True: get_news()

2.2K20

爬虫学习笔记:Selenium爬取淘宝美食 附完整代码

淘宝的页面也是通过Ajax来抓取相关数据,但是参数比较复杂,甚至包含加密秘钥。使用selenium来模拟浏览器操作,抓取淘宝商品信息,即可做到可见即可爬。...q=美食,得到第一页商品信息。如下图: 而我们需要的信息都在每一页商品条目里。如下图: 在页面的最下面,有个分页导航。为100,要获得所以的信息只需要从第一页到带一百顺序遍历。...采用selenium模拟浏览器不断的遍历即可得到,这里为直接输入页数然后点击确定转跳。这样即使程序中途出错,也可以知道爬到那一页了,而不必从头再来。...如下图: 如上图,我们爬取淘宝商品信息,只需要得到总共多少条商品条目,而淘宝默认100,则只需要每一页商品条目都加载完之后爬取,然后再转跳就好了。用selenium只需要定位到专业和条目即可。...转跳先定位跳转条目,然后clear()清空输入框,然后使用send_keys()将页码传入输入框,最后点击确定。在跳转那里可以观察到成功跳转到一页后,页码会高亮显示。

94320

python 斗鱼爬虫

看了许久的斗鱼直播,突然心血来潮,想用爬虫对斗鱼所有直播间的信息抓取 一开始,我简单对斗鱼代码进行了分析,直观地认为所有直播间都在html文件里。...当然不能拉~~~ 这时 一般有两种方法处理:第一种继续打开Chrome的开发者工具,当我们点击“下一页”之后,浏览器发送了如下请求: 接着 我们查看这些请求文件 点击它们 我们发现这个文件里面包含了当前页面的直播间的相关信息...分别代表 游戏分类 和 页码 1 = 英雄联盟 1 = 第一页 ''' start_url = data_url + '2_' + str(i) + '/1' r = requests.get(start_url...(r) #我们已经将其转换成字典,其中的pgcnt键对应的值是页码我们获取它 n = json_obj['data']['pgcnt'] #以循环的方式,对当前游戏分类的每一页进行遍历 for x in...有兴趣的小伙伴可以去了解下selenium库 建议大家在对网页爬取,先查看网站的robots协议,不要以盈利的目的进行深度爬取。

1.8K50
领券