基于selenium爬取京东
爬取iphone
注意:browser对象会发生变化,当对当前网页做任意操作时
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# if __name__ == '__main__': browser = webdriver.Chrome()
browser.get('https://www.jd.com')
# 搜索iphone
_input = browser.find_element_by_id('key')
_input.send_keys('iphone')
_input.send_keys(Keys.ENTER)
time.sleep(5)
# 按销量排序
sales = browser.find_element_by_xpath('//div[@class="f-sort"]/a[2]')
sales.click() has_next = True
while has_next:
# 获取当前的页码
time.sleep(5)
cur_page = browser.find_element_by_xpath('//div[@id="J_bottomPage"]/span[@class="p-skip"]/input').get_attribute('value')
print('------------------------- 当前页码 {} -------------------------'.format(cur_page)) # 加载全部数据,数据随着滚动条的下来而加载
# good_list = browser.find_element_by_id('J_goodsList')
# y = good_list.rect['y'] + good_list.rect['height']
next_page = browser.find_element_by_class_name('pn-next')
y = next_page.location['y']
browser.execute_script('window.scrollTo(0, {})'.format(y))
time.sleep(3)
# 获取当前页面所有商品列表
p_list = browser.find_elements_by_class_name('gl-item')
for p in p_list:
production = {}
sku = p.get_attribute('data-sku')
production['price'] = p.find_element_by_css_selector('strong.J_{}'.format(sku)).text
production['name'] = p.find_element_by_css_selector('div.p-name>a>em').text
production['comment'] = p.find_element_by_id('J_comment_{}'.format(sku)).text
production['shop'] = p.find_element_by_css_selector('div.p-shop>span>a').get_attribute('title')
print(production) # 下一页
cur_next_page = browser.find_element_by_class_name('pn-next')
# 判断是否是最后一页
if 'disabled' in cur_next_page.get_attribute('class'):
has_next = False
else:
cur_next_page.click() browser.quit()
优化
import time
import sys
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# if __name__ == '__main__':
keyword = 'iphone'
if len(sys.argv) > 1:
keyword = sys.argv[1]
browser = webdriver.Chrome()
browser.get('https://www.jd.com')
# 搜索iphone
_input = browser.find_element_by_id('key')
_input.send_keys(keyword)
_input.send_keys(Keys.ENTER)
time.sleep(5)
# 按销量排序
sales = browser.find_element_by_xpath('//div[@class="f-sort"]/a[2]')
sales.click() has_next = True
while has_next:
# 获取当前的页码
time.sleep(5)
cur_page = browser.find_element_by_xpath('//div[@id="J_bottomPage"]/span[@class="p-skip"]/input').get_attribute('value')
print('------------------------- 当前页码 {} -------------------------'.format(cur_page)) # 加载全部数据,数据随着滚动条的下来而加载
# good_list = browser.find_element_by_id('J_goodsList')
# y = good_list.rect['y'] + good_list.rect['height']
next_page = browser.find_element_by_class_name('pn-next')
y = next_page.location['y']
browser.execute_script('window.scrollTo(0, {})'.format(y))
time.sleep(3)
# 获取当前页面所有商品列表
p_list = browser.find_elements_by_class_name('gl-item')
for p in p_list:
production = {}
sku = p.get_attribute('data-sku')
production['price'] = p.find_element_by_css_selector('strong.J_{}'.format(sku)).text
production['name'] = p.find_element_by_css_selector('div.p-name>a>em').text
production['comment'] = p.find_element_by_id('J_comment_{}'.format(sku)).text
production['shop'] = p.find_element_by_css_selector('div.p-shop>span>a').get_attribute('title')
print(production) # 下一页
cur_next_page = browser.find_element_by_class_name('pn-next')
# 判断是否是最后一页
if 'disabled' in cur_next_page.get_attribute('class'):
has_next = False
else:
cur_next_page.click() browser.quit()
通过sys使
python jd.py mac
补充
sys.argv[0] 是脚本的名称
sys.argv[1] 是参数
基于selenium爬取京东的更多相关文章
- selenium模块使用详解、打码平台使用、xpath使用、使用selenium爬取京东商品信息、scrapy框架介绍与安装
今日内容概要 selenium的使用 打码平台使用 xpath使用 爬取京东商品信息 scrapy 介绍和安装 内容详细 1.selenium模块的使用 # 之前咱们学requests,可以发送htt ...
- 利用selenium爬取京东商品信息存放到mongodb
利用selenium爬取京东商城的商品信息思路: 1.首先进入京东的搜索页面,分析搜索页面信息可以得到路由结构 2.根据页面信息可以看到京东在搜索页面使用了懒加载,所以为了解决这个问题,使用递归.等待 ...
- Scrapy实战篇(八)之Scrapy对接selenium爬取京东商城商品数据
本篇目标:我们以爬取京东商城商品数据为例,展示Scrapy框架对接selenium爬取京东商城商品数据. 背景: 京东商城页面为js动态加载页面,直接使用request请求,无法得到我们想要的商品数据 ...
- 爬虫系列(十三) 用selenium爬取京东商品
这篇文章,我们将通过 selenium 模拟用户使用浏览器的行为,爬取京东商品信息,还是先放上最终的效果图: 1.网页分析 (1)初步分析 原本博主打算写一个能够爬取所有商品信息的爬虫,可是在分析过程 ...
- Scrapy实战篇(七)之Scrapy配合Selenium爬取京东商城信息(下)
之前我们使用了selenium加Firefox作为下载中间件来实现爬取京东的商品信息.但是在大规模的爬取的时候,Firefox消耗资源比较多,因此我们希望换一种资源消耗更小的方法来爬取相关的信息. 下 ...
- 使用Selenium爬取京东电商数据(以手机商品为例)
进入京东(https://www.jd.com)后,我如果搜索特定的手机产品,如oppo find x2,会先出现如下的商品列表页: 如果点击进入其中一个商品会进入到如下图所示的商品详情页,可以看到用 ...
- Scrapy实战篇(六)之Scrapy配合Selenium爬取京东信息(上)
在之前的一篇实战之中,我们已经爬取过京东商城的文胸数据,但是前面的那一篇其实是有一个缺陷的,不知道你看出来没有,下面就来详细的说明和解决这个缺陷. 我们在京东搜索页面输入关键字进行搜索的时候,页面的返 ...
- 爬虫(十七):Scrapy框架(四) 对接selenium爬取京东商品数据
1. Scrapy对接Selenium Scrapy抓取页面的方式和requests库类似,都是直接模拟HTTP请求,而Scrapy也不能抓取JavaScript动态谊染的页面.在前面的博客中抓取Ja ...
- python爬虫——用selenium爬取京东商品信息
1.先附上效果图(我偷懒只爬了4页) 2.京东的网址https://www.jd.com/ 3.我这里是不加载图片,加快爬取速度,也可以用Headless无弹窗模式 options = webdri ...
随机推荐
- Postman:非专业的并发测试
Postman是开发中常用的接口测试工具,也可以用来进行并发测试. 使用方法如下: 1. 直接输入url 选择GET方法,点击Send. 结果打印一个"test",如下: 2. 使 ...
- 如何用python“优雅的”调用有道翻译?
前言 其实在以前就盯上有道翻译了的,但是由于时间问题一直没有研究(我的骚操作还在后面,记得关注),本文主要讲解如何用python调用有道翻译,讲解这个爬虫与有道翻译的js“斗争”的过程! 当然,本文仅 ...
- dotnet 如何调试某个文件是哪个代码创建
我发现了自己的软件,会在桌面创建一个 1.txt 文件,但是我不知道是哪个代码创建的,那么如何进行快速的调试找到是哪个代码创建的 最简单的方法是使用 VisualStudio 全局搜 1.txt 看是 ...
- CodeForce - 1189 D1. Add on a Tree (思维题)
Note that this is the first problem of the two similar problems. You can hack this problem only if y ...
- Vue CLI 介绍安装
https://cli.vuejs.org/zh/guide/ 介绍 警告 这份文档是对应 @vue/cli 3.x 版本的.老版本的 vue-cli 文档请移步这里. Vue CLI 是一个基于 V ...
- Python2_实现文件中特定内容的获取
===================================================== 参考链接 Python 文本文件内容批量抽取:https://blog.csdn.net/q ...
- SSI(服务器端嵌入)
简介 SSI(服务器端嵌入)是一组放在 HTML 页面中的指令,当服务器向客户端访问提供这些页面时,会解释执行这些指令.它们能为已有的 HTML 页面添加动态生成内容,不需要通过 CGI 程序来或其他 ...
- 17.python文件处理
原文:https://www.cnblogs.com/linhaifeng/articles/5984922.html 文件处理流程: 1. 打开文件,得到文件句柄并赋值给一个变量2. 通过句柄对文件 ...
- acwing 102 -利用二分枚举区间平均值
我真的是服了,看了一晚上发现居然,,,,, 上图吧,话说有人评论没... 对于结果来说,不一定要枚举有序数列,感觉这是一种猜结果的方法,只不过特别精确,令人发指 #include<cstdio& ...
- Java程序员必备:异常的十个关键知识点
前言 总结了Java异常十个关键知识点,面试或者工作中都有用哦,加油. 一. 异常是什么 异常是指阻止当前方法或作用域继续执行的问题.比如你读取的文件不存在,数组越界,进行除法时,除数为0等都会导致异 ...