Python京东爬虫

这是我以前写的一个基于Chrome浏览器的京东爬虫,使用了selenium库和Chrome浏览器,实验性质的脚本,可以根据不同的商品名称,抓取京东商城上的商品明细列表,并存入MySQL数据库。

京东爬虫的Github项目地址

文章目录

  • Python京东爬虫
    • 1. 安装对应的ChromeDriver
    • 2. 安装Python3
    • 3. 安装Mysql8.0数据库
    • 4. 执行SQL脚本创建数据库
    • 5. 修改链接字符串和商品名称
    • 6. 执行脚本源代码

1. 安装对应的ChromeDriver

ChromeDriver下载镜像链接

2. 安装Python3

python3安装教程

3. 安装Mysql8.0数据库

Docker安装MySQL5.7和8

4. 执行SQL脚本创建数据库

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;DROP TABLE IF EXISTS `jdshop`;
CREATE TABLE `jdshop`  (`sid` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品ID',`keyword` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '搜索词',`shop` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '店铺名称',`label` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '前置标签',`title` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '商品标题',`advertising` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '广告',`price` decimal(8, 2) NULL DEFAULT NULL COMMENT '价格',`pinggou` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '拼购价',`plus` decimal(8, 2) NULL DEFAULT NULL COMMENT '会员价',`comment` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '评论数',`tag` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '打标',`isale` int(11) NULL DEFAULT NULL COMMENT '销量排名',`ctime` datetime(0) NULL DEFAULT NULL,PRIMARY KEY (`sid`) USING BTREE,UNIQUE INDEX `sid_UNIQUE`(`sid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6001 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;SET FOREIGN_KEY_CHECKS = 1;

5. 修改链接字符串和商品名称

# 待抓取的商品名称
KEYWORD = '手机'
# mysql 连接字符串
conn = pymysql.connect(host='192.168.72.128', port=3306, user='admin', passwd='XXXXXX', db='dahlindb')

6. 执行脚本源代码

import re
import time
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from urllib.parse import quote
from pyquery import PyQuery as pg
import json
import csv
from bs4 import BeautifulSoup
import pymysqlINDEX = 0
CREATE_TIME = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
KEYWORD = '手机'
URL = 'https://search.jd.com/Search?keyword={key1}&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq={key2}&page={page}&s={amount}&psort=3&cid2=653&cid3=655&click=0'
MAX_PAGE = 100chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
browser = webdriver.Chrome(options=chrome_options)
wait = WebDriverWait(browser, 10)conn = pymysql.connect(host='192.168.72.128', port=3306, user='admin', passwd='XXXXX', db='dahlindb')
sql_insert = "INSERT INTO jdshop (keyword,shop,label,title,advertising,price,pinggou,plus,comment,tag,isale,ctime) " \"VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);"
cursor = conn.cursor()def filter_title(thtml):"""Extract tags and titles:param thtml::return:"""label, title = '', ''front_title = re.search('<span.*?>(.*?)</span>', thtml, re.S)if front_title and len(front_title.group()) > 1:label = front_title[1]result = re.search('<em>(.*?)</em>', thtml, re.S)temp = re.sub('<span.*?</span>', '', result[1])temp = re.sub('<font.*?>', ' ', temp)temp = re.sub('</font>', '', temp)title = re.sub('<img.*?/>', ' ', temp)return label, titledef index_page(index):"""Grab page data based on index code:param page:index:return:"""try:amount = 1page = 1if index > 1:amount = (index-1)*60+1page = index+2print("正在扒取第{page}页".format(page=index))url = URL.format(key1=quote(KEYWORD), key2=quote(KEYWORD), page=page, amount=amount)browser.get(url)for i in range(1, 5):browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")time.sleep(1)wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.gl-item')))html = browser.page_sourceget_products(html)except TimeoutException as e:print(e)def get_products(html):"""Extract product detail data:return:"""global INDEXdoc = pg(html)items = doc('.gl-item').items()for item in items:pinggou = item.find('.price-pingou').text().replace('\n', ' ').strip('¥')INDEX = INDEX+1thtml = item.find('.p-name').html()label, title = filter_title(thtml)if item.find('.p-tag3').attr('src'):label = '京东精选'shop = item.find('.p-shop').text().strip('\n')advertising = item.find('.promo-words').text()plus = item.find('.price-plus-1').text().strip('¥')comment = item.find('.p-commit').text().replace('\n条评价', '').strip('二手有售').strip('\n')tag = item.find('.p-icons').text().replace('\n', '-')sprice = BeautifulSoup(item.find('.p-price').html(), 'lxml')price = sprice.i.stringplus = plus if plus != '' else priceif not (price.split('.')[0]).isdigit():price = "0"plus = "0"insert_db = (KEYWORD, shop, label, title, advertising, price, pinggou, plus, comment, tag, INDEX, CREATE_TIME)print(insert_db)try:effect_now = cursor.executemany(sql_insert, [insert_db, ])conn.commit()except Exception as e:print(e)print('The {} is running,return value is  {}! '.format(INDEX, cursor.lastrowid))def main():"""Traversing a hundred pages of data:return:"""for i in range(1, MAX_PAGE+1):index_page(i)time.sleep(2)browser.close()cursor.close()conn.close()if __name__ == '__main__':main()

Python京东爬虫相关推荐

  1. Python 京东爬虫抢手机小程序

    1.需要插件chromedriver.exe,这个可以从网上直接下载 2.给大家附上代码`#京东抢手机脚本 from splinter.browser import Browser import ti ...

  2. Python之爬虫-京东商品

    Python之爬虫-京东商品 #!/usr/bin/env python # coding: utf-8from selenium import webdriver from selenium.web ...

  3. Python动态爬虫爬取京东商品评论

    Python 动态爬虫爬取京东商品评论 1. 概述 京东商城是Python爬虫初学者试手的经典平台,反爬虫程度较低,但评论采取了动态加载的方式,爬取京东商品评论是学习动态爬虫的一个极佳方法. 动态爬虫 ...

  4. 用Python实现爬虫爬取京东笔记本电脑图片

    最近需要从网上搜集一些数据,于是花了几个小时把爬虫学了一下.其实我在两年前的一个简单的站内搜索引擎的实现已经涉及到了简单的爬虫,不过那时候老想着偷懒,加上山大新闻网的设计又很好爬,所以当时写得很low ...

  5. python 京东 价格_python 京东商品价格爬虫示例

    这篇文章主要为大家详细介绍了python 京东商品价格爬虫示例,具有一定的参考价值,可以用来参考一下. 对python这个高级语言感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! 闲着没事 ...

  6. python学爬虫书籍_Python3实战爬虫之爬取京东图书的图文详解

    最近在学习python3,下面这篇文章主要给大家介绍了关于Python3实战爬虫之爬取京东图书图片的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下 ...

  7. python制作爬虫爬取京东商品评论教程

    python制作爬虫爬取京东商品评论教程 作者:蓝鲸 类型:转载 本文是继前2篇Python爬虫系列文章的后续篇,给大家介绍的是如何使用Python爬取京东商品评论信息的方法,并根据数据绘制成各种统计 ...

  8. Python开源爬虫项目代码:抓取淘宝、京东、QQ、知网数据--转

    数据来源:数据挖掘入门与实战  公众号: datadw scrapy_jingdong[9]- 京东爬虫.基于scrapy的京东网站爬虫,保存格式为csv.[9]: https://github.co ...

  9. python开源爬虫项目违法吗_Python开源爬虫项目代码:抓取淘宝、京东、QQ、知网数据...

    数据挖掘入门与实战 公众号: datadw scrapy_jingdong[9]- 京东爬虫.基于scrapy的京东网站爬虫,保存格式为csv.[9]: https://github.com/taiz ...

  10. python京东商品采集_利用Python正则表达式抓取京东网商品信息

    京东(JD.com)是中国最大的自营式电商企业,2015年第一季度在中国自营式B2C电商市场的占有率为56.3%.如此庞大的一个电商网站,上面的商品信息是海量的,小编今天就带小伙伴利用正则表达式,并且 ...

最新文章

  1. mysql的安装胚子_Mysql安装
  2. Spark 把RDD数据保存到hdfs单个文件中,而不是目录
  3. TypeError: object.__init__() takes no parameters异常报错分析
  4. Count on a tree
  5. 关于Direct2D
  6. 大数计算器概念c语言,用C语言求两个超大整数的和
  7. docker安装部署_有关docker安装yearning和部署inception(闭源)
  8. 一键提升多媒体内容质量:漫谈图像超分辨率技术
  9. hibernate联合主键 注解方式
  10. 代码质量检测平台架构设计
  11. 数据结构期末复习(四)
  12. Lync Server 2013视频会议新功能及配置
  13. 错误: 15138删除对于用户失败,数据库主体在该数据库中拥有架构,无法删除。解决方法(转)
  14. 获取oracle日志文件,ORACLE关于日志文件基本操作
  15. golang fmt包格式化verb错误处理
  16. 点云配准icp算法推导
  17. win10电脑不显示手机连接服务器失败,手机投屏win10电脑失败的解决方案
  18. java tcp 多人聊天_Java TCP简易多人聊天室内
  19. RCV 接收指令例程
  20. 网络购书挑战书业传统营销模式

热门文章

  1. 了解C语言中的exec函数家族
  2. 7z解压crc错误_rar文件解压缩失败解压末端出现错误的解决方法
  3. 怎么使用7zip进行分批压缩_7z解压软件(7-zip)分卷压缩怎么做?
  4. 前端切图仔,常用的21个字符串方法
  5. QT信号槽的压力问题
  6. 美国弗吉尼亚大学计算机科学,弗吉尼亚大学计算机科学专业
  7. 30岁宝妈转行UI设计,后来怎么样了?
  8. 我用数据分析,揭开了中国男篮最后的遮羞布
  9. java简繁体互转(附源码和字典)
  10. 计算机解决问题的几个必要,1–1计算机解决问题的过程.ppt