selenium自动化测试工具模拟登陆爬取当当网top500畅销书单
selenium自动化测试工具可谓是爬虫的利器,基本动态加载的网页都能抓取,当然随着大型网站的更新,也出现针对selenium的反爬,有些网站可以识别你是否用的是selenium访问,然后对你加以限制.
当当网目前还没有对这方面加以限制,所以今天就用这个练习熟悉一下selenium操作,我们可以试一下爬取一下当当网top500的畅销书单的相关信息,页面如下:

虽然这个页面不用登录就可以进来,但是我们可以随便试一下模拟登陆,直接在这个页面上面点击登录进入登录界面,然后会弹出一下窗口,
这是百分百会出现的,所以要先模拟点击把它点掉,然后才能传账号和密码进行登录

然后就是验证码的解决,说实话,现在当当这验证码基本很难实现用代码来破解,但是可以人工跳过,我在这里暂停了十秒,直接自己点击,然后等待程序运行,这样子就很容易就绕过了,反正只要过了验证这一关,下面的数据就不怕拿不到了.

贴下代码:
from selenium import webdriver
import time
from lxml import etree
import csv browser = webdriver.Chrome()
browser.get("http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-recent7-0-0-1-1")
# browser.get_cookies()
time.sleep(1)
button_login1 = browser.find_element_by_xpath("//span[@id='nickname']/a[@class='login_link']")
button_login1.click()
close_button = browser.find_element_by_id("J_loginMaskClose")
close_button.click()
input_phone_number = browser.find_element_by_id("txtUsername")
input_phone_number.send_keys('自己账号')
time.sleep(0.2)
input_password = browser.find_element_by_id("txtPassword")
input_password.send_keys('自己密码')
time.sleep(10)
button_login2 = browser.find_element_by_id("submitLoginBtn")
button_login2.click()
# button_book = browser.find_element_by_name("nav1")
# button_book.click()
# button_list = browser.find_element_by_xpath("//div[@class='book_top ']/a[@class='more_top']")
# button_list.click()
for i in range(25):
time.sleep(5)
text = browser.page_source
# print(text)
html = etree.HTML(text)
book_name = html.xpath("//div[@class='name']/a/text()")
price = html.xpath("//span[@class='price_n']/text()")
original_price = html.xpath("//span[@class='price_r']/text()")
publisher = html.xpath("//div[@class='publisher_info'][2]/a/text()")
# auther = html.xpath("//div[@class='publisher_info'][1]/text()")
time1 = html.xpath("//div[@class='publisher_info'][2]/span/text()")
result = zip(book_name, publisher, price, original_price, time1)
with open('book.csv', 'a', newline='') as csvfile:
writer = csv.writer(csvfile, dialect='excel')
writer.writerows(result)
for i in result:
print(i)
next_button = browser.find_element_by_xpath(
"//div[@class='bang_list_box']/div[@class='paginating']/ul[@class='paging']/li[@class='next']/a")
next_button.click()
selenium自动化测试工具模拟登陆爬取当当网top500畅销书单的更多相关文章
- 使用Post方法模拟登陆爬取网页
最近弄爬虫,遇到的一个问题就是如何使用post方法模拟登陆爬取网页.下面是极简版的代码: import java.io.BufferedReader; import java.io.InputStre ...
- Selenium+Chrome/phantomJS模拟浏览器爬取淘宝商品信息
#使用selenium+Carome/phantomJS模拟浏览器爬取淘宝商品信息 # 思路: # 第一步:利用selenium驱动浏览器,搜索商品信息,得到商品列表 # 第二步:分析商品页数,驱动浏 ...
- 使用Post方法模拟登陆爬取网页(转)
使用Post方法模拟登陆爬取网页 最近弄爬虫,遇到的一个问题就是如何使用post方法模拟登陆爬取网页.下面是极简版的代码: import java.io.BufferedReader; impor ...
- 网络爬虫之定向爬虫:爬取当当网2015年图书销售排行榜信息(Crawler)
做了个爬虫,爬取当当网--2015年图书销售排行榜 TOP500 爬取的基本思想是:通过浏览网页,列出你所想要获取的信息,然后通过浏览网页的源码和检查(这里用的是chrome)来获相关信息的节点,最后 ...
- Scrapy爬虫(5)爬取当当网图书畅销榜
本次将会使用Scrapy来爬取当当网的图书畅销榜,其网页截图如下: 我们的爬虫将会把每本书的排名,书名,作者,出版社,价格以及评论数爬取出来,并保存为csv格式的文件.项目的具体创建就不再多讲 ...
- python爬取当当网的书籍信息并保存到csv文件
python爬取当当网的书籍信息并保存到csv文件 依赖的库: requests #用来获取页面内容 BeautifulSoup #opython3不能安装BeautifulSoup,但可以安装Bea ...
- python爬虫06 | 你的第一个爬虫,爬取当当网 Top 500 本五星好评书籍
来啦,老弟 我们已经知道怎么使用 Requests 进行各种请求骚操作 也知道了对服务器返回的数据如何使用 正则表达式 来过滤我们想要的内容 ... 那么接下来 我们就使用 requests 和 re ...
- scrapy项目3:爬取当当网中机器学习的数据及价格(spider类)
1.网页解析 当当网中,人工智能数据的首页url如下为http://category.dangdang.com/cp01.54.12.00.00.00.html 点击下方的链接,一次观察各个页面的ur ...
- Python爬虫之selenium爬虫,模拟浏览器爬取天猫信息
由于工作需要,需要提取到天猫400个指定商品页面中指定的信息,于是有了这个爬虫.这是一个使用 selenium 爬取天猫商品信息的爬虫,虽然功能单一,但是也算是 selenium 爬虫的基本用法了. ...
随机推荐
- mysql 添加用户 - 设置远程登录/本地登陆的权限
默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,必须修改root允许远程连接,或者添加一个允许远程连接的帐户,为了安全起见,我添加一个新的帐户: mysql> GRANT A ...
- Mac下搭建Vue开发环境
认知: 注:上面的图片转自Vue2.0 新手入门 — 从环境搭建到发布 1.安装brew 打开终端运行以下命令: /usr/bin/ruby -e "$(curl -fsSL https:/ ...
- c#/netcore/mvc视图中调用控制器方法
1: public class HomeController : Controller { public ActionResult Index() { ...
- git重命名文件和文件夹
git mv -f oldfolder newfoldergit add -u newfolder (-u选项会更新已经追踪的文件和文件夹)git commit -m "changed th ...
- LoadRunner书籍推荐
精通软件性能测试与LoadRunner实战 性能技巧查询 软件性能测试过程详解与案例剖析----读 性能测试理论 性能测试进阶指南-------loadrunner 9.1实战 这是一本比loadru ...
- Telnet设置
修改hostname:修改/etc/hosts文件vi /etc/hosts# Do not remove the following line, or various programs# that ...
- charles破解https请求
当你的app包从http升级到https的时候,是不是忽然间发现你的请求抓不到了呢?别担心,只是因为你们的app加密升级了,但是我们还是可以正常破解的.接下来直接谈破解步骤啦: 1:首先打开charl ...
- 使用shell脚本常见的一些问题
Jdk版本:jdk-8u102-linux-x64 Tomcat版本:apache-tomcat-7.0.92 Redis版本:redis-5.0.0 由于公司项目的需要,要在多台服务器上面部署一些应 ...
- PJzhang:python基础入门的7个疗程-six
猫宁!!! 参考链接:易灵微课-21天轻松掌握零基础python入门必修课 https://www.liaoxuefeng.com/wiki/1016959663602400 第16天:开源模块 sy ...
- 【Python开发】Lambda表达式使用
lambda只是一个表达式,函数体比def简单很多. lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去. lambda表达式是起到一个函数速写的作用.允 ...