当前位置: 首页 > wzjs >正文

网站建设公司合同模板管理培训网站建设

网站建设公司合同模板,管理培训网站建设,做外贸站推广,企业网络营销青岛目录 项目介绍 代码部分 引用第三方库 全局定义 主函数 爬虫主函数代码 搜索“关键词” 翻页函数代码 获取商品列表信息代码 完整代码 项目介绍 项目基于Python的第三方库Selenium模拟浏览器运行、lxml的etree解析和操作HTML文档,获取京东平台中某类商品的详细信息&…

目录

项目介绍

代码部分

引用第三方库

全局定义

主函数

爬虫主函数代码

搜索“关键词”

翻页函数代码

获取商品列表信息代码

完整代码

项目介绍

项目基于Python的第三方库Selenium模拟浏览器运行、lxml的etree解析和操作HTML文档,获取京东平台中某类商品的详细信息(商品标题、价格、销量、商铺名称、地区、商品详情页链接、商铺链接等),并基于第三方库openpyxl建立、存储于Excel表格中。

效果预览:

代码部分

引用第三方库

# 声明第三方库/头文件
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from lxml import etree
import time
import openpyxl as op               #导入Excel读写库

【第三方库】主要运用到selenium、openpyxl、lxml等Python的第三方库;如若缺失,使用pip指令安装即可。

pip install selenium
pip install lxml
pip install openpyxl

【ChromeDriver下载与安装】若运行过程中出现如下问题,可能是ChromeDriver版本与Chrome版本不一致导致,需要对ChromeDriver进行更新。ChromeDriver下载与安装:手把手教你,ChromeDriver下载与安装

全局定义

输入初始参数:

  • 爬取商品的关键词KEYWORD
  • 爬取网页的终止页pageEnd

启动ChromeDriver服务,并请求京东网页(京东(JD.COM)-正品低价、品质保障、配送及时、轻松购物!)

# 定义全局变量
count = 1KEYWORD = input('输入搜索的商品关键词Keyword:')# 要搜索的商品的关键词
pageEnd = int(input('输入爬取的终止页PageEnd:'))# 爬取终止页# 启动ChromeDriver服务
options = webdriver.ChromeOptions()
# 关闭自动测试状态显示 // 会导致浏览器报:请停用开发者模式
options.add_experimental_option("excludeSwitches", ['enable-automation'])
# 把chrome设为selenium驱动的浏览器代理;
driver = webdriver.Chrome(options=options)
# 反爬机制
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",{"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})
# 窗口最大化
driver.maximize_window()
# 请求京东(JD)网页
driver.get('https://www.jd.com/')
# wait是Selenium中的一个等待类,用于在特定条件满足之前等待一定的时间(这里是20秒)。
# 如果一直到等待时间都没满足则会捕获TimeoutException异常
wait = WebDriverWait(driver,20)

主函数

1、建立Excel表格,并设置第一行(表头);

2、调爬虫主函数Crawer_main,启动爬虫程序;

3、输出.xlsx格式文件。

if __name__ == '__main__':# 建立Excel表格try:ws = op.Workbook()                                  # 创建Workbookwb = ws.create_sheet(index=0)                       # 创建worsheet# Excel第一行:表头title_list = ['Num', 'title', 'Price', 'Marker', 'Shop', 'Title_URL','Shop_URL', 'Img_URL']for i in range(0, len(title_list)):wb.cell(row=count, column=i + 1, value=title_list[i])count += 1  # 从第二行开始写爬取数据except Exception as exc:print("Excel建立失败!")# 爬取主函数Crawer_main()# 保存Excel表格data = time.strftime('%Y%m%d-%H%M', time.localtime(time.time()))Filename = "{}_{}_FromJD.xlsx".format(KEYWORD,data)ws.save(filename = Filename)print(Filename + "存储成功~")

(输入)效果预览:

爬虫主函数代码

1、找到“输入框”输入关键词KEYWORD,并点击“搜索”按键;

2、若弹出登录窗口,登录即可;

3、从第1页爬取到第PageEnd页;

4、调用get_goods获取起始页PageStart的商品列表信息;

5、调用page_turning翻页进行翻页,并爬取第PageStart+1页到第PageEnd页商品信息。

# 爬虫main函数
def Crawer_main():try:# 搜索KEYWORDsearch_goods()# 从1爬取到PageEndfor i in range(1, pageEnd + 1):get_goods(i)if (i+1 < pageEnd+1):page_turning()except Exception as exc:print("Crawer_main函数错误!Error:{}".format(exc))

淘宝登录界面示意图:

搜索“关键词”

ChromeDriver服务请求京东服务,模拟浏览器运行,找到“输入框”输入关键词KEYWORD,并点击“搜索”按键。

# 输入“关键词”,搜索
def search_goods():try:print("正在搜索: {}".format(KEYWORD))# 找到“搜索框”search = driver.find_element(By.XPATH,'//*[@id="key"]')# 输入框写入“关键词KeyWord”search.send_keys(KEYWORD)# 强制等待1秒钟,待系统响应结束time.sleep(1)# 点击“回车”按键,搜索“关键词KEYWORD”search.send_keys(Keys.ENTER)print("搜索完成!")except Exception as exc:print("search_goods函数错误!Error:{}".format(exc))

翻页函数代码

翻页函数page_turning,搜索并点击“下一页”按键;

# 翻页函数
def page_turning():try:# 获取“下一页”按钮,并点击time.sleep(1)driver.find_element(By.XPATH,'//*[@id="J_bottomPage"]/span[1]/a[9]').click()time.sleep(1)driver.refresh()except Exception as exc:print("page_turning函数错误!Error:{}".format(exc))

获取商品列表信息代码

1、滑动页面至页码选择界面(如图所示),待页面所有信息加载完成后,按下“Enter”开始爬取当前页内容;

2、etree请求HTML页面信息,并进行解析;

3、商品详细信息(商品标题、价格、销量、商铺名称、地区、详情页链接、商铺链接等)

4、将获取的信息写入字典和Excel表格中;

# 获取每一页的商品信息
def get_goods(page):try:# 声明全局变量countglobal count# 刷新/滑动界面,使所有信息都加载完成后,手动输入数字"1",开始爬取if input('确认界面加载完毕,输入数字“1”开始爬取-->') == 1:pass# 获取html网页html = driver.page_sourcehtml = etree.HTML(html)# 提取所有商品的共同父元素的类选择器li_list = html.xpath('//*[@id="J_goodsList"]/ul/li')for li in li_list:t = li.xpath('./div/div[4]/a/em//text()')             # 获取名称title = ''.join(t)title = title.replace(" ","")price = li.xpath('./div/div[3]/strong/i/text()')[0]   # 获取价格mark = li.xpath('./div/div[5]/strong/a/text()')[0]    # 评价人数marker = mark.split(" ")[1]marker = marker.split("+")[0]shop = li.xpath('./div/div[7]/span/a/text()')[0]      # 获取商店Title_URL = li.xpath('./div/div[1]/a/@href')[0]       # 获取商品链接Shop_URL = li.xpath('./div/div[7]/span/a/@href')[0]   # 获取商铺链接Img_URL = li.xpath('./div/div[1]/a/img/@src')[0]      # 获取商品图片链接Num = "JD{}_{}".format(time.strftime('%Y%m', time.localtime(time.time())), count-1)# 存储商品详细信息product = {'Page':page,'Num':Num,'Title':title,'Price':price,'Marker':marker,'Shop':shop,'Title_URL':Title_URL,'Shop_URL':Shop_URL,'Img_URL':Img_URL}print(product)# 商品信息写入Excel表格中wb.cell(row=count, column=1, value=Num)       # 序号wb.cell(row=count, column=2, value=title)     # 标题wb.cell(row=count, column=3, value=price)     # 价格wb.cell(row=count, column=4, value=marker)    # 评价人数wb.cell(row=count, column=5, value=shop)      # 店铺名称wb.cell(row=count, column=6, value=Title_URL) # 商品链接wb.cell(row=count, column=7, value=Shop_URL)  # 商铺链接wb.cell(row=count, column=8, value=Img_URL)   # 图片链接count += 1except Exception as exc:print("get_goods函数错误!Error:{}".format(exc))

京东界面页码选择界面示意图:

获取商品列表信息示意图:

完整代码

【使用说明】鉴于浏览器请求数据受到网络限制和网页可能出现需要滑动验证等不确定因素,故代码由“定时延时方式”改为“手动确认方式”以便留足时间等待数据请求;数据请求完成后,按下“Enter”开始爬取当前页商品详情(如下图所示)。

【小技巧】请求数据期间,可手动滑动京东界面,加载商品详情(注意:滑动到页面选择位置即可)为方便起见,亦可按住“Ctrl”按键滑动鼠标滚轮,使浏览器调整百分比至整个网页全部显示出来。

【爬虫】Python实现爬取京东商品信息(超详细)

# 声明第三方库/头文件
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from lxml import etree
import time
import openpyxl as op               #导入Excel读写库# 定义全局变量
count = 1KEYWORD = input('输入搜索的商品关键词Keyword:')# 要搜索的商品的关键词
pageEnd = int(input('输入爬取的终止页PageEnd:'))# 爬取终止页# 启动ChromeDriver服务
options = webdriver.ChromeOptions()
# 关闭自动测试状态显示 // 会导致浏览器报:请停用开发者模式
options.add_experimental_option("excludeSwitches", ['enable-automation'])
# 把chrome设为selenium驱动的浏览器代理;
driver = webdriver.Chrome(options=options)
# 反爬机制
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",{"source": """Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"""})
# 窗口最大化
driver.maximize_window()
# 请求京东(JD)网页
driver.get('https://www.jd.com/')
# wait是Selenium中的一个等待类,用于在特定条件满足之前等待一定的时间(这里是20秒)。
# 如果一直到等待时间都没满足则会捕获TimeoutException异常
wait = WebDriverWait(driver,20)# 输入“关键词”,搜索
def search_goods():try:print("正在搜索: {}".format(KEYWORD))# 找到“搜索框”search = driver.find_element(By.XPATH,'//*[@id="key"]')# 输入框写入“关键词KeyWord”search.send_keys(KEYWORD)# 强制等待1秒钟,待系统响应结束time.sleep(1)# 点击“回车”按键,搜索“关键词KEYWORD”search.send_keys(Keys.ENTER)print("搜索完成!")except Exception as exc:print("search_goods函数错误!Error:{}".format(exc))# 翻页函数
def page_turning():try:# 获取“下一页”按钮,并点击time.sleep(1)driver.find_element(By.XPATH,'//*[@id="J_bottomPage"]/span[1]/a[9]').click()time.sleep(1)driver.refresh()except Exception as exc:print("page_turning函数错误!Error:{}".format(exc))# 爬虫main函数
def Crawer_main():try:# 搜索KEYWORDsearch_goods()# 从1爬取到PageEndfor i in range(1, pageEnd + 1):get_goods(i)if (i+1 < pageEnd+1):page_turning()except Exception as exc:print("Crawer_main函数错误!Error:{}".format(exc))# 获取每一页的商品信息
def get_goods(page):try:# 声明全局变量countglobal count# 刷新/滑动界面,使所有信息都加载完成后,手动输入数字"1",开始爬取if input('确认界面加载完毕,输入数字“1”开始爬取-->') == 1:pass# 获取html网页html = driver.page_sourcehtml = etree.HTML(html)# 提取所有商品的共同父元素的类选择器li_list = html.xpath('//*[@id="J_goodsList"]/ul/li')for li in li_list:t = li.xpath('./div/div[4]/a/em//text()')             # 获取名称title = ''.join(t)title = title.replace(" ","")price = li.xpath('./div/div[3]/strong/i/text()')[0]   # 获取价格mark = li.xpath('./div/div[5]/strong/a/text()')[0]    # 评价人数marker = mark.split(" ")[1]marker = marker.split("+")[0]shop = li.xpath('./div/div[7]/span/a/text()')[0]      # 获取商店Title_URL = li.xpath('./div/div[1]/a/@href')[0]       # 获取商品链接Shop_URL = li.xpath('./div/div[7]/span/a/@href')[0]   # 获取商铺链接Img_URL = li.xpath('./div/div[1]/a/img/@src')[0]      # 获取商品图片链接Num = "JD{}_{}".format(time.strftime('%Y%m', time.localtime(time.time())), count-1)# 存储商品详细信息product = {'Page':page,'Num':Num,'Title':title,'Price':price,'Marker':marker,'Shop':shop,'Title_URL':Title_URL,'Shop_URL':Shop_URL,'Img_URL':Img_URL}print(product)# 商品信息写入Excel表格中wb.cell(row=count, column=1, value=Num)       # 序号wb.cell(row=count, column=2, value=title)     # 标题wb.cell(row=count, column=3, value=price)     # 价格wb.cell(row=count, column=4, value=marker)    # 评价人数wb.cell(row=count, column=5, value=shop)      # 店铺名称wb.cell(row=count, column=6, value=Title_URL) # 商品链接wb.cell(row=count, column=7, value=Shop_URL)  # 商铺链接wb.cell(row=count, column=8, value=Img_URL)   # 图片链接count += 1except Exception as exc:print("get_goods函数错误!Error:{}".format(exc))if __name__ == '__main__':# 建立Excel表格try:ws = op.Workbook()                                  # 创建Workbookwb = ws.create_sheet(index=0)                       # 创建worsheet# Excel第一行:表头title_list = ['Num', 'title', 'Price', 'Marker', 'Shop', 'Title_URL','Shop_URL', 'Img_URL']for i in range(0, len(title_list)):wb.cell(row=count, column=i + 1, value=title_list[i])count += 1  # 从第二行开始写爬取数据except Exception as exc:print("Excel建立失败!")# 爬取主函数Crawer_main()# 保存Excel表格data = time.strftime('%Y%m%d-%H%M', time.localtime(time.time()))Filename = "{}_{}_FromJD.xlsx".format(KEYWORD,data)ws.save(filename = Filename)print(Filename + "存储成功~")

【不足】不足之处,恳请批评指正,我们共同进步!

【参考】博主发布的Python实现爬取淘宝商品信息(超详细)


文章转载自:

http://sdNfzNdm.Lfqtp.cn
http://WXr4cfOa.Lfqtp.cn
http://bF0Uwww7.Lfqtp.cn
http://B43njgfM.Lfqtp.cn
http://Cod8G6Lk.Lfqtp.cn
http://M3fROSY5.Lfqtp.cn
http://BJTaRYLF.Lfqtp.cn
http://anCIaIgt.Lfqtp.cn
http://yj9ck6vx.Lfqtp.cn
http://CticfxQ3.Lfqtp.cn
http://xABpeHve.Lfqtp.cn
http://1SaGnChA.Lfqtp.cn
http://MDIPgBl4.Lfqtp.cn
http://Ed2rRH2u.Lfqtp.cn
http://acyebPKz.Lfqtp.cn
http://vw6TJGqE.Lfqtp.cn
http://Ww03b0mz.Lfqtp.cn
http://VRmfxYqT.Lfqtp.cn
http://43MpZvl5.Lfqtp.cn
http://FjKYlGb7.Lfqtp.cn
http://4i1GHnwj.Lfqtp.cn
http://pc64ev1x.Lfqtp.cn
http://wVLhD8tb.Lfqtp.cn
http://SQDEmbKI.Lfqtp.cn
http://Tu3DZqxq.Lfqtp.cn
http://pDkY0U8U.Lfqtp.cn
http://o5kA2fGl.Lfqtp.cn
http://C8NBTh68.Lfqtp.cn
http://IOOIWBxJ.Lfqtp.cn
http://7G7VmUjH.Lfqtp.cn
http://www.dtcms.com/wzjs/625686.html

相关文章:

  • 可信网站可信站点手机写wordpress博客
  • 低价网站建设制作设计公司公司建设网站的服务费
  • 移动网站 拉新辽宁省建设工程信息网如何传业绩
  • 游戏网站建设的目的淘宝的seo是什么意思
  • 哈尔滨搭建网站别人做的网站怎么安全放在我的公司
  • 交易所网站开发实战北京网站优化校学费
  • 火狐显示网站开发天津市招投标信息网
  • 河南个人网站建设很多搜索词网站怎样做
  • 在哪里可以做网站网站建设用户调查报告
  • 外贸做中英文网站找网站开发需求客户平台
  • 网站设置始终请求电脑版学it要多久多少学费
  • 网站建设广告图片旅游类网站设计方案
  • 永泰县建设局网站wordpress加挂载点
  • 传媒网站建设网外贸大型门户网站制作
  • php网站开发核心技术网站后台更新后主页不显示
  • 网站开发任务分解WordPress托管如果使用插件
  • 建站费用报价单佛山网站排名优化
  • 手机商城网站设计定制版网站建设详细报价
  • 武功做网站做网站的5要素
  • 怎么优化网站关键字网站开发vue版本是什么
  • 设计公司网站河北省最大的网页设计公司
  • 微信公众号做网站短链接生成下载
  • 菏泽网站建设 梧桐树wordpress 视频收费
  • 四川省城乡建设网网站可视化网站制作软件
  • 有没有做盗版电影网站犯罪的帝国网站网站手机版怎么做
  • 网站开发服务计入什么科目网站目标
  • 在哪里个网站找专业做ps的人工商注册登记系统官网
  • 网站建设电话清远市住房和城乡建设局网站
  • 大朗网站制作清远短视频推广
  • 南平网站建设徐州营销型网站制使