selenium+Xpath+csv爬取京东商品信息

  • selenium爬取京东的手机商品信息
    • python的入门库
    • 查看网页源码
    • 代码
    • 总结

selenium爬取京东的手机商品信息

利用pycharm爬取京东商城的手机商品的信息(价格,型号,样式,或者内存详细信息)

python的入门库

师傅领进门修行在个人!!!

import requests#请求库
from bs4 import BeautifulSoup #解析网页用
import lxml #解析网页headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0'
'Referer':'https://www.jd.com/'
}#设置请求头模拟浏览器访问,防止反爬虫系统url = 'https://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA&enc=utf-8&wq=%E6%89%8B%E6%9C%BA&pvid=0184af803e7e4c309dde99e28a40547d'r.requests.get(url,headers = headers)#向网页发送请求#print(r.status_code)#返回状态码
#print(r.text)#返回网页代码soup = BeautifulSoup(r.text,'lxml')#解析网页info_frist = soup.find_all(attrs = {'class':'gl-i-wrap'})
#根据所需要爬取的东西的网页代码id进行爬取for title in info_frist:print(title.text.replace('n',''))#遍历info_获取的信息进行格式化输出

查看网页源码

打开京东商城搜索手机,注意要再点击一下分类处的手机(下图),否则会有其他收集相关的产品干扰信息,第二个图为手机商品图

F12大法,定位到需要爬取位置的源码,得你所得。

下一步打开pychrm(python软件,不会还有人不会配环境吧,不会吧不会吧)

代码

 **话不多说直接上代码****都带注释的,不懂的再私信我,在线答疑**
import csv
import json
import random
import re
import time
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
#声明插件的路径
driver_path = r'F:\Pycharm\chromedriver.exe'
#声明一个谷歌插件,不加载图片#不加载图片节省时间
options = webdriver.ChromeOptions()
options.add_experimental_option('prefs', {'profile.managed_default_content_settings.images': 2})
#设置属性
driver = webdriver.Chrome(executable_path=driver_path,options=options)
#url
url = 'https://search.jd.com/search?keyword=%E6%89%8B%E6%9C%BA&cid3=655&cid2=653&page=1&s=1&click=0'
#声明一个list,用来存储dict
data_list = []
def start_spider():# 请求urldriver.get(url)# 显示等待下一页的元素加载完成WebDriverWait(driver, 1000).until(EC.presence_of_all_elements_located((By.CLASS_NAME, 'pn-next')))# 先获取一个有多少页all_page = eval(driver.find_element_by_css_selector('span.p-skip>em>b').text)print(all_page)# 设置一个计数器count = 0while True:try:count += 1WebDriverWait(driver, 1000).until(EC.presence_of_all_elements_located((By.CLASS_NAME, 'gl-item')))# 显示等待商品信息加载完成driver.execute_script('document.documentElement.scrollTop=10000')# 拉滚动条到底部,加载商品time.sleep(3)driver.execute_script('document.documentElement.scrollTop=0')# 随机延迟,等下元素全部刷新lis = driver.find_elements_by_class_name('gl-item')# 开始提取信息,找到ul标签下的全部li标签print(lis)for li in lis:#商品名字name = li.find_element_by_xpath('.//div[@class="p-name p-name-type-2"]//em').text# 去掉“京品手机”pattern = r"京品手机|\n"name = re.sub(pattern, "", name, flags=re.S)#商品链接phone_url = li.find_elements_by_xpath(".//div[@class='p-name p-name-type-2']/a")[0].get_attribute("href")#商品价格charge = li.find_element_by_xpath('.//div[@class="p-price"]//i').text#评论人数number = li.find_element_by_xpath('.//div[@class="p-commit"]/strong/a').text#店铺名字shop_name = li.find_elements_by_xpath('.//div[@class="p-shop"]//a')if len(shop_name) > 0:shop_name = shop_name[0].textelse:shop_name = "null"#是否自营tmp = li.find_elements_by_xpath(".//div[@class='p-icons']/i[1]")phone_proprietary = True if len(tmp) > 0 and tmp[0].text == "自营" else False#获取手机idphone_id = li.get_attribute("data-sku")data_dict = {}data_dict['phone_id'] = phone_iddata_dict['name'] = namedata_dict['phone_url'] = phone_urldata_dict['charge'] = chargedata_dict['number'] = numberdata_dict['shop_name'] = shop_namedata_dict['phone_proprietary'] = phone_proprietarydata_list.append(data_dict)print(data_dict)except Exception as e:print(e)# 如果count==all_page就退出循环so = all_pageif count == so:breakdriver.find_element_by_class_name('pn-next').click()time.sleep(2)def main():start_spider()# 将数据写入jsonwenjwith open('data_json.json', 'a+', encoding='utf-8') as f:json.dump(data_list, f, ensure_ascii=False, indent=4)print('json文件写入完成')with open('data_csv.csv', 'w', encoding='utf-8', newline='') as f:# 表头title = data_list[0].keys()# 声明writerwriter = csv.DictWriter(f, title)# 写入表头writer.writeheader()# 批量写入数据writer.writerows(data_list)print('csv文件写入完成')if __name__ == '__main__':main()# 退出浏览器driver.quit()

总结

多学多练多操作

selenium爬取京东的手机分类页面下的商品信息相关推荐

  1. 利用scrapy爬取京东移动端的图片素材和商品信息

    有一个练习项目需要一些带分类信息的商品测试图片,从现有的电商网站爬取是个不错的选择.刚好最近又在练习scrapy的使用,这一篇记录一下用scrapy爬取京东的图片素材并保存商品信息的思路. 文中代码共 ...

  2. java爬虫京东商品,Java爬虫实现爬取京东上的手机搜索页面 HttpCliient+Jsoup

    1.需求及配置 需求:爬取京东手机搜索页面的信息,记录各手机的名称,价格,评论数等,形成一个可用于实际分析的数据表格. 使用maven项目,log4j记录日志,日志仅导出到控制台. maven依赖如下 ...

  3. 18-使用Selenium爬取京东商品

    目的:采用Selenium爬取京东上商品的价格.名称.评论数.店铺名称.标记. 结果呈现:屏幕显示:生成相应的文件 注:我和胖子是2018年1月20号在一起的,今天是2019.1.12号,马上快1年了 ...

  4. Selenium爬取京东商品评价,并进行基于情感词典的文本情感极性分析

    Selenium爬取京东商品评价,并进行基于情感词典的文本情感极性分析 1. 介绍及开发环境 2. 爬虫实现 2.1 请求构造 2.2 提取信息 2.3 数据存储 2.4 运行结果 3. 文本情感分析 ...

  5. layui获取input信息_python爬虫—用selenium爬取京东商品信息

    python爬虫--用selenium爬取京东商品信息 1.先附上效果图(我偷懒只爬了4页) 2.京东的网址https://www.jd.com/ 3.我这里是不加载图片,加快爬取速度,也可以用Hea ...

  6. 练习:selenium 爬取京东的电脑商品100页的数据并保存到csv文件中

    练习:selenium 爬取京东的电脑商品100页的数据并保存到csv文件中 from selenium.webdriver import Chrome, ChromeOptions import t ...

  7. 用selenium爬取京东平台商品列表,爬取商品名称、价格、店铺信息

    #用selenium爬取京东平台商品列表,爬取商品名称.价格.店铺信息from selenium import webdriver from selenium.webdriver.common.by ...

  8. 使用Selenium爬取豆瓣电影前100的爱情片相关信息

    slenium入门小练手之使用Selenium爬取豆瓣电影前100的爱情片相关信息 文章目录 什么是Selenium 1.准备工作 1.1 安装Selenium 1.2 浏览器驱动安装 1.3 环境变 ...

  9. selenium爬取巨潮资讯指定领域下所有上市公司的数据并存储到csv文件

    selenium爬取巨潮资讯指定领域下所有上市公司的数据并存储到csv文件 from selenium.webdriver import Chrome #引入selenium中的Chrome from ...

  10. java 手机网页_Java爬虫: 爬取京东上的手机搜索页面 HttpClient+Jsoup

    1.需求及配置 需求:爬取京东手机搜索页面的信息,记录各手机的名称,价格,评论数等,形成一个可用于实际分析的数据表格. 使用Maven项目,log4j记录日志,日志仅导出到控制台. Maven依赖如下 ...

最新文章

  1. referer 访问控制
  2. C#垃圾回收(GC)
  3. 什么是物联网?—Vecloud 微云
  4. Java中伪造referer来获取数据
  5. 在 Spring Boot 中使用 Spring AOP 和 AspectJ 来测量方法的执行时间
  6. c语言冒泡法加逗号,Ubuntu 10.04 LTS 无法添加计算机的问题
  7. Java的值传递和引用值传递的区别
  8. linux vim tag,Vim基础知识之ctags 及 Taglist 插件
  9. 《x86汇编语言:从实模式到保护模式》课后答案
  10. 2012r2配置java_JDK+Tomcat 服务器配置+腾讯云Win2012 R2 配置安装
  11. git 分支merge主分支 解决冲突
  12. 用CubeSLAM跑自己的数据集
  13. 计算机windows8黑屏怎么办,详解笔记本电脑出现电源拔出就黑屏的win8处理教程
  14. matlab 7.0安装教程
  15. 不玩3a学计算机电脑显卡,还在为电脑配置发愁?用集成显卡都能玩的3A大作!
  16. 魔方口诀(个人备忘)
  17. mate40怎么用鸿蒙系统,怎么使用鸿蒙系统?
  18. 浅谈localhost
  19. 0行代码拿210万年薪,ChatGPT催生新型「程序员」岗:工作纯靠和AI聊天
  20. 论计算机叫兽们与林纳斯·托瓦兹

热门文章

  1. python openpose
  2. c语言扩展欧几里得算法编程实现,C语言实现欧几里得算法与扩展欧几里得算法.doc...
  3. Encrypt java_ESAPI对称加密使用JavaEncryptor
  4. python提取pdf表格数据 无边框_Python使用Tabula提取PDF表格数据
  5. 机房管理降本增效:Hightopo如何将可视化监控做到行业高阶?
  6. 重启tomcat服务器步骤
  7. 林子雨《大数据技术原理与应用》第五讲——NoSQL数据库
  8. 《大数据基础教程、实验和案例教程---林子雨版》分布式模式的HBase配置
  9. 计算机ping使用的端口,Win7系统中如何Ping端口?Ping端口命令的用法
  10. Django 项目部署