Python爬取京东商品信息
该文本详细介绍了使用Python通过Selenium框架从京东网站爬取华为手机前十页商品信息的方法和步骤:
前期准备
- 下载并安装谷歌浏览器的驱动程序(如Google ChromeDriver)。
- 使用pip安装必要的第三方库:selenium、time 和 xlwt。
开始编程- 打开京东网页并搜索“华为手机”。
- 使用Selenium定位输入框输入关键词并执行搜索。
- 通过xpath定位元素获取商品链接、名称、价格等信息。
数据爬取与存储- 通过循环获取每个商品的具体信息并存储到列表中。
- 使用Excel将爬取的数据写入表格并保存为文件。
完成代码- 提供完整的代码示例供参考使用。
摘要涵盖了整个爬虫过程的关键步骤和核心功能实现方法。
通过Python技术从京东平台获取华为品牌手机前十页的商品详细信息,包括每款商品的URL地址,商品名称,售价以及评分数量和评论数量,并记录下各商家的名称
1.前期准备
(1)下载驱动
我使用的是谷歌浏览器,所以要下载谷歌驱动,用来告诉电脑在哪打开浏览器。
驱动文件下载地址:http://chromedriver.storage.googleapis.com/index.html
(需要下载与自己的浏览器版本相一致或者相近版本的驱动,要记住驱动下载之后存放的位置)
(2)安装第三方库
selenium,time,xlwt都是爬虫需要用到的库

安装方法1:
在pycharm最下面有一行选项,如下图,选择Terminal

在完成选择后,在出现的页面中输入[pip]()并拼接"install +你要安装的库名称"进行操作后,请等待pip会自动处理并完成安装过程。例如要安装time库时

安装方法2:




在搜索栏中搜索你要安装的库,找到之后点击左下角的Install Package

之后等待安装,若成功会显示

2.开始编程
(1)在谷歌中打开京东

executable_path就是你下载的驱动的存放位置
(2)在京东中搜索“华为手机”
为了实现模拟用户在搜索栏中键入"华为手机"的功能,在网页开发中常用的方法是定位到输入框并获取其对应的XPath值。
访问京东网页时,请使用键盘组合Ctrl+Shift+l切换至源代码模式。该处显示一个指向当前滑动位置的箭头图标;你可以看到页面上的某个位置,在此位置上会出现高亮标记并显示对应的源代码内容;这表明此处对应的是源代码中的相应部分。

找到源代码后右击,再点Copy\Copy XPath就得到了输入框的xpath

编写代码之前,请先获取xpath地址。采用find_element_by_xpath方法来定位输入框位置,在输入框内输入“华为手机”,随后定位搜索按钮位置,并单击执行搜索操作。为了确保操作顺利进行,请注意以下事项:由于网络连接可能存在延迟导致网页加载时间较长,在等待页面完全加载完成后才继续下一步操作会更加稳妥。

(3)获取单个商品信息
进入到商品页面之后,我们先爬取第一个商品信息
同样可以应用 xpath 定位元素位置。但是这个时候最好避免采用上述方法获取 xpath。这样获取的 xpath 在定位过程中会逐层查找 html 结构。建议我们自行编写 xpath 以缩短定位所需的时间。
我们可以观察到,在下图所示的红色方框内存储着商品对应的价格信息。因此可以直接定位到相应的div单元格以提取价格信息

//表示跨级搜索,/表示逐级搜索

在确定价格信息位置后, 需要使用get_attribute(‘textContent’)方法来提取该位置中的文本内容

从单一商品的价格数据中提取后,
后续的信息同样可以通过类似的方式进行提取。
具体而言,
通过在每个页面中对所有商品逐一进行抓取,
并利用循环机制实现自动化处理;
对于多个页面的数据获取,
则需在此基础上进一步引入多层循环机制以确保全面覆盖;
通过列表存储的方式进行整合处理,
便于后续将其整理成表格形式以便分析使用。

(4)数据写入表格

3.完整代码
from selenium import webdriver
from time import sleep
import xlwt # 进行excel操作
#谷歌驱动 告诉电脑在哪打开浏览器
driver=webdriver.Chrome(executable_path="D:/chromedriver.exe")
#打开网页
driver.get("https://www.jd.com")
#通过xpath找到输入框输入要搜索的
driver.find_element_by_xpath("//*[@id='key']").send_keys("华为手机")
#通过xpath找到搜索按钮点击
driver.find_element_by_xpath("//*[@id='search']/div/div[2]/button").click()
driver.implicitly_wait(5)#隐式休息5s
hrefs=[]
names=[]
prices=[]
commits=[]
shops=[]
for j in range(1,11):
for i in range(1, 31):
href = driver.find_element_by_xpath(
"//ul[@class='gl-warp clearfix']/li[" + str(i) + "]//div[@class='p-img']/a").get_attribute("href")#get_attribute获得对应属性的属性值
information = driver.find_element_by_xpath(
"//ul[@class='gl-warp clearfix']/li[" + str(i) + "]//div[@class='p-name p-name-type-2']")
price = driver.find_element_by_xpath(
"//ul[@class='gl-warp clearfix']/li[" + str(i) + "]//div[@class='p-price']")
commit = driver.find_element_by_xpath(
"//ul[@class='gl-warp clearfix']/li[" + str(i) + "]//div[@class='p-commit']/strong")
shop = driver.find_element_by_xpath(
"//ul[@class='gl-warp clearfix']/li[" + str(i) + "]//div[@class='p-shop']")
hrefs.append(href)
names.append(information.get_attribute("textContent").replace('\n', '').replace('\t', ''))
prices.append(price.get_attribute("textContent").replace('\n', '').replace('\t', '').replace('¥',''))
commits.append(commit.get_attribute("textContent").replace('\n', '').replace('\t', ''))
shops.append(shop.get_attribute("textContent").replace('\n', '').replace('\t', ''))
driver.find_element_by_xpath("//*[@id='J_bottomPage']/span[1]/a[9]").click()
sleep(2)
print("第"+str(j)+"页")
print("爬取完毕!")
#存数据
book = xlwt.Workbook(encoding="utf-8", style_compression=0) # 创建workbook对象
sheet = book.add_sheet('京东', cell_overwrite_ok=True) # 创建工作表
col = ("链接","名称","价格","评价","商店")
for i in range(0, 5):
sheet.write(0, i, col[i]) # 列名
for i in range(0,300):
sheet.write(i+1,0,hrefs[i])
for i in range(0,300):
sheet.write(i+1,1,names[i])
for i in range(0,300):
sheet.write(i+1,2,prices[i])
for i in range(0,300):
sheet.write(i+1,3,commits[i])
for i in range(0,300):
sheet.write(i+1,4,shops[i])
book.save("京东.xls") # 保存
print("关闭浏览器,保存数据")
4.输出结果


