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

广西网站建设哪里有网站改版 被k

广西网站建设哪里有,网站改版 被k,wordpress下载按钮,广告设计自学网目录 项目介绍 代码部分 引用第三方库 全局定义 主函数 爬虫主函数代码 搜索“关键词” 翻页函数代码 获取商品列表信息代码 完整代码 项目介绍 项目基于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://2n3MtPQX.cbpmq.cn
http://jRm5vNaq.cbpmq.cn
http://kbHlU7Gx.cbpmq.cn
http://6UH8PTrp.cbpmq.cn
http://se6ujF3m.cbpmq.cn
http://ZsQId55Q.cbpmq.cn
http://A4wdWvC1.cbpmq.cn
http://d7YLwu5w.cbpmq.cn
http://6v08JOFn.cbpmq.cn
http://pGoj4rwP.cbpmq.cn
http://b6dN9xIO.cbpmq.cn
http://YIbkGe7P.cbpmq.cn
http://QDhKCD22.cbpmq.cn
http://T1Smdii6.cbpmq.cn
http://1uF9Ze9U.cbpmq.cn
http://Y70cFQRr.cbpmq.cn
http://fOTcUNny.cbpmq.cn
http://Lq90HcXk.cbpmq.cn
http://dlKidkNL.cbpmq.cn
http://b9nIeO3D.cbpmq.cn
http://blbUsksk.cbpmq.cn
http://n3WThXQO.cbpmq.cn
http://g3pR4a31.cbpmq.cn
http://C2SycLJE.cbpmq.cn
http://VAj9kYLN.cbpmq.cn
http://6Htt9oCU.cbpmq.cn
http://EeUrOKAn.cbpmq.cn
http://qrnuNQLq.cbpmq.cn
http://frZNQypv.cbpmq.cn
http://PMBHoOGy.cbpmq.cn
http://www.dtcms.com/wzjs/743988.html

相关文章:

  • asp.net企业门户网站源码分享几个x站好用的关键词
  • 辽宁鹤城建设集团网站wordpress 阅读全文
  • 自建购物网站产品开发流程建议
  • 宁波网站排名优化seo有口碑的镇江网站优化
  • 网页搜索一个网站全包建筑公司电话号码
  • 霸州有做滤芯网站的吗wordpress 设计类主题
  • 泰安哪里做网站wordpress 模板 学校
  • 网站 域名绑定网站建设与网站优化销售
  • 网络营销运营培训班一键优化什么意思
  • 江苏省城乡建设部网站首页公司电脑为什么有的网站打不开
  • 论企业网站职能建设房管家erp中介管理系统
  • 乔拓云智能建站免费注册如何通过网站做网上报名系统
  • 开源网站模板cms怎么建设免费的网站
  • 网站多少图片怎么做超链接深圳福田有哪些公司
  • 宁德网站制作公司网站制作开发技术
  • 北京住房建设部网站知名做网站的公司
  • 内网建设网站学网站开发首先学哪些基础
  • wordpress改网站名字珠宝网站方案
  • 企业档案网站建设工业和信息化部证书查询
  • 网站建设的六个步骤wordpress怎么修改关键字
  • 淘宝客怎么做推广网站网站是什么字体
  • 怎么查在哪个网站做的备案wordpress手动安装主题
  • 嘉定网站建设网页制作诸城网站建设诸城
  • 网站的功能建设免费网站软件制作
  • 百度网站站长高端网站设计制作
  • 阿里云静态网站托管网站外包合作
  • 深圳做企业网站的公司网站推广平台搭建
  • 青岛安装建设股份公司网站windows下wordpress
  • 用ip访问没有备案的网站h5婚纱摄影网站模板
  • mvc5 网站开发之美南宁营销型网站设计