如何高效爬取京东商品信息,实现精准数据采集?
- 内容介绍
- 文章标签
- 相关推荐
本文共计696个文字,预计阅读时间需要3分钟。
京东方产品信息爬取方法与思路、应用模块数据提取方式、pyquery解析库、网页分析代码如下运行效果+应用模块+数据提取方式、pyquery解析库、网页分析、代码如下、运行效果+仅提供学习参考、错误之处还请指正。
京东商品信息爬取方法与思路应用模块数据提取方式pyquery解析库网页分析代码如下运行效果- 应用模块
- 数据提取方式pyquery解析库
- 网页分析
仅供学习参考错误之处还请留言交流。
方法与思路
应用模块
from selenium import webdriver #导入驱动webdriver from selenium.webdriver.common.by import By #By是selenium中内置的一个class在这个class中有各种方法来定位元素 from selenium.webdriver.support.ui import WebDriverWait #设置浏览器驱动休眠等待避免频繁操作封ip from selenium.webdriver.support import expected_conditions as EC #判断一个元素是否存在如何判断alert弹窗出来了如何判断动态的元素等等一系列的判断在selenium的expected_conditions模块收集了一系列的场景判断方法 from time import sleep #休息睡眠 from pyquery import PyQuery as pq #pyquery是个解析库 pyquery对象初始化html字符串urlfile皆可
数据提取方式pyquery解析库
html browser.page_sourcedoc pq(html)items doc(#J_goodsList .gl-warp.clearfix .gl-item).items()for index, i in enumerate(items):if i(.p-img a).attr(href)[0] /:ss www.jd.com/)#浏览器等待10秒wait WebDriverWait(browser, 10)KEY 泡面def search():#解决加载超时出错try:#input输入框等待加载出元素#key#key是在搜索输入框对应的代码右击Copy,Copy selector复制粘贴下来input wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, #key)))#submit按钮即搜索确认按钮#search > div > div.form > button获取方式同理submit wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, #search > div > div.form > button)))#输入框输入键即字输入内容为KEYinput.send_keys(KEY)#确认按钮点击submit.click()#睡眠延迟2秒避免频繁操作封IPsleep(2)#等待加载出底部页面信息第一页,EC.text_to_be_present_in_element为判断元素上有文本信息##J_bottomPage > span.p-num > a.currcurr为页寄存器一般高亮显示处为所在页数wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, #J_bottomPage > span.p-num > a.curr), 1))sleep(2)#执行函数获取商品信息get_products()#获取商品页数total wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, #J_bottomPage > span.p-skip > em:nth-child(1) > b)))#print(total)#返回# print(total.text)#返回100return total.text#超时出错时重新执行search()程序except TimeoutError:return search()#获取商品信息def get_products():##J_goodsList > ul > li:nth-child(60)为页末最后一个商品信息最后一个商品信息加载出来则全页商品信息全部加载出来wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, #J_goodsList > ul > li:last-child)))#获取网页源码html browser.page_source# print(html)# 解析doc pq(html)# print(doc)#J_goodsList .gl-warp.clearfix .gl-item为idJ_goodsList标签下classgl-warp.clearfix# 的子标签下的classgl-item的标签即每页60个商品标签有60个结果items doc(#J_goodsList .gl-warp.clearfix .gl-item).items()#enumerate()枚举、列举、计算for index, i in enumerate(items):# print(i(.p-name.p-name-type-2 em).text())# print(*30)# 运行结果# 康师傅方便面 Express速达面馆煮面 私房红烧牛肉面*2金牌香辣牛肉面*2 袋装# 泡面# 礼盒整箱装# # 京东超市统一 方便面 来一桶 老坛酸菜牛肉面辣味 12桶 整箱装# if i(.p-img a).attr(href)[0] /:ss www.558idc.com/helan.html 复制请保留原URL】
本文共计696个文字,预计阅读时间需要3分钟。
京东方产品信息爬取方法与思路、应用模块数据提取方式、pyquery解析库、网页分析代码如下运行效果+应用模块+数据提取方式、pyquery解析库、网页分析、代码如下、运行效果+仅提供学习参考、错误之处还请指正。
京东商品信息爬取方法与思路应用模块数据提取方式pyquery解析库网页分析代码如下运行效果- 应用模块
- 数据提取方式pyquery解析库
- 网页分析
仅供学习参考错误之处还请留言交流。
方法与思路
应用模块
from selenium import webdriver #导入驱动webdriver from selenium.webdriver.common.by import By #By是selenium中内置的一个class在这个class中有各种方法来定位元素 from selenium.webdriver.support.ui import WebDriverWait #设置浏览器驱动休眠等待避免频繁操作封ip from selenium.webdriver.support import expected_conditions as EC #判断一个元素是否存在如何判断alert弹窗出来了如何判断动态的元素等等一系列的判断在selenium的expected_conditions模块收集了一系列的场景判断方法 from time import sleep #休息睡眠 from pyquery import PyQuery as pq #pyquery是个解析库 pyquery对象初始化html字符串urlfile皆可
数据提取方式pyquery解析库
html browser.page_sourcedoc pq(html)items doc(#J_goodsList .gl-warp.clearfix .gl-item).items()for index, i in enumerate(items):if i(.p-img a).attr(href)[0] /:ss www.jd.com/)#浏览器等待10秒wait WebDriverWait(browser, 10)KEY 泡面def search():#解决加载超时出错try:#input输入框等待加载出元素#key#key是在搜索输入框对应的代码右击Copy,Copy selector复制粘贴下来input wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, #key)))#submit按钮即搜索确认按钮#search > div > div.form > button获取方式同理submit wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, #search > div > div.form > button)))#输入框输入键即字输入内容为KEYinput.send_keys(KEY)#确认按钮点击submit.click()#睡眠延迟2秒避免频繁操作封IPsleep(2)#等待加载出底部页面信息第一页,EC.text_to_be_present_in_element为判断元素上有文本信息##J_bottomPage > span.p-num > a.currcurr为页寄存器一般高亮显示处为所在页数wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, #J_bottomPage > span.p-num > a.curr), 1))sleep(2)#执行函数获取商品信息get_products()#获取商品页数total wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, #J_bottomPage > span.p-skip > em:nth-child(1) > b)))#print(total)#返回# print(total.text)#返回100return total.text#超时出错时重新执行search()程序except TimeoutError:return search()#获取商品信息def get_products():##J_goodsList > ul > li:nth-child(60)为页末最后一个商品信息最后一个商品信息加载出来则全页商品信息全部加载出来wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, #J_goodsList > ul > li:last-child)))#获取网页源码html browser.page_source# print(html)# 解析doc pq(html)# print(doc)#J_goodsList .gl-warp.clearfix .gl-item为idJ_goodsList标签下classgl-warp.clearfix# 的子标签下的classgl-item的标签即每页60个商品标签有60个结果items doc(#J_goodsList .gl-warp.clearfix .gl-item).items()#enumerate()枚举、列举、计算for index, i in enumerate(items):# print(i(.p-name.p-name-type-2 em).text())# print(*30)# 运行结果# 康师傅方便面 Express速达面馆煮面 私房红烧牛肉面*2金牌香辣牛肉面*2 袋装# 泡面# 礼盒整箱装# # 京东超市统一 方便面 来一桶 老坛酸菜牛肉面辣味 12桶 整箱装# if i(.p-img a).attr(href)[0] /:ss www.558idc.com/helan.html 复制请保留原URL】

