Python网络爬虫——京东商城商品列表
Python_网络爬虫——京东商城商品列表
最近在拓展自己知识面,想学习一下其他的编程语言,处于多方的考虑最终选择了
Python,Python从发布之初就以庞大的用户集群占据了编程的一席之地,python用最少的语言完成最多的工作量,丰富的代码库供学习使用。现行的python涉及了:大数据、机器学习、web开发、人工智能等众多方面
什么是网络爬虫
网络爬虫是一个从web资源获取所需要数据的过程,即直接从web资源获取所需的信息,而不是使用网站提供的线程的API访问接口。
网络爬虫也称为网页数据资源获取,是一种数据获取技术,通过该技术我们可以直接从网站的HTML获取所需的数据其中包含与web资源进行通讯、剖解文件获取所需数据整理成信息,及转换成所需的数据格式。
简单一点:就是通过网站的web界面获取我们想要的数据,并以一定的格式存储。每一次获取就是请求一次网页资源的过程,根据返回网页的信息,通过解析工具找到我们想要的数据信息,并加以保存便于后续使用。
网络爬虫一般分为下面几步:
- 确定访问站点地址
 - 分析HTML找到目标标签
 - 发送请求获取资源
 - 使用工具剖析HTML页面
 - 获取所需资源
 - 保存获取资源
 
网络爬虫可以用来做什么
网络爬虫用的方面很多,比如做大数据分析网络数据源的获取,收集一些文章,为了满足内心猎奇现在一些美女写真等。
网络爬虫有一定的版权纠纷问题,所以开发者要有一定的判断意识把握住心中的底线,如果出现越界行为只有法律来规定你的底线了。
网络爬虫实战案例——获取京东商城列表
- 确定请求网址
本次实战案例为京东商城查询列表

 
分析网站地址 url:https://search.jd.com/Search?keyword=手机&page=1
可以从网站地址中分析要传入的参数:
keyword:搜索关键字
page:页码
每页的产品数:30
这里在京东商城页码上有一个迷惑行为:在浏览器上切换页码是page的数为page*2-1的数字,实则每页显示用户浏览到底部时又加载了一页,故在浏览器上网页资源上显得有 60 条商品,每页的实际大小为30
- 分析网站HTML找到目标标签
利用谷歌浏览器的F12或鼠标右键检查标签,找到之际想要的标签

 
程序需要引入的包
import requests as rq
from bs4 import BeautifulSoup as bfs
import json
import time
- 发送请求获取资源
根据参数编写生成产品列表方法 
def get_urls(num):
    URL = "https://search.jd.com/Search"
    Param="?keyword=手机&page={}"
    return [URL+Param.format(index) for index in range(1,num+1)]
发送请求,为请求方法添加请求头
#访问网址
def get_requests(url):
    header={
        "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"
    }
    return rq.get(url,headers=header)
- 使用工具剖析HTML页面
将请求信息转义需要格式 
def get_soup(r):
    if r.status_code ==rq.codes.ok:
        soup=bfs(r.text,"lxml")
    else:
        print("网络请求失败...")
        soup=None
    return soup
- 获取所需资源
该页面中查找需要信息,商品列表中的名称、价格、店铺名称、店铺链接、评论数 
#获取商品信息
def get_goods(soup):
    goods=[]
    if soup !=None:
        tab_div=soup.find('div',id="J_goodsList")
        tab_goods=tab_div.find_all('div',class_="gl-i-wrap") 
        for good in tab_goods:
            name=good.find('div',class_="p-name").text
            price=good.find('div',class_="p-price").text
            comment=good.find('div',class_="p-commit").find('strong').select_one("a").text
            shop=good.find('div',class_="p-shop").find('span').find('a').text
            shop_url=good.find('div',class_="p-shop").find('span').find('a')['href']
            goods.append({"name":name,"price":price,"comment":comment,"shop":shop,"shop_url":shop_url})
    return goods
- 保存获取资源
保存文件格式为json格式,这里可以替换成保存其他格式,或保存到业务库中 
def save_to_json(goods,file):
    with open(file,"w",encoding="utf-8") as fp:
        json.dump(goods,fp,indent=2,sort_keys=True,ensure_ascii=False)
程序主方法,将上面各功能组合在一起。实现解析全站
if __name__=="__main__":
    goods=[]
    a=0
    for url in  get_urls(30):
        a+=1
        print("当前访问页码{},网址为:{}".format(a,url))
        response=get_requests(url)
        soup=get_soup(response)
        page_goods= get_goods(soup)
        goods+=page_goods
        print("等待10秒进入下一页...")
        time.sleep(10)
    for good in goods:
        print(good)
    save_to_json(goods,"jd_phone2.json")
运行程序,查看保存文件是否符合格式

Python网络爬虫——京东商城商品列表的更多相关文章
- Python网络爬虫笔记(五):下载、分析京东P20销售数据
		
(一) 分析网页 下载下面这个链接的销售数据 https://item.jd.com/6733026.html#comment 1. 翻页的时候,谷歌F12的Network页签可以看到下面 ...
 - Python之爬虫-京东商品
		
Python之爬虫-京东商品 #!/usr/bin/env python # coding: utf-8 from selenium import webdriver from selenium.we ...
 - Python网络爬虫与信息提取笔记
		
直接复制粘贴笔记发现有问题 文档下载地址//download.csdn.net/download/hide_on_rush/12266493 掌握定向网络数据爬取和网页解析的基本能力常用的 Pytho ...
 - 《精通python网络爬虫》笔记
		
<精通python网络爬虫>韦玮 著 目录结构 第一章 什么是网络爬虫 第二章 爬虫技能概览 第三章 爬虫实现原理与实现技术 第四章 Urllib库与URLError异常处理 第五章 正则 ...
 - Python网络爬虫与信息提取
		
1.Requests库入门 Requests安装 用管理员身份打开命令提示符: pip install requests 测试:打开IDLE: >>> import requests ...
 - 第3次作业-MOOC学习笔记:Python网络爬虫与信息提取
		
1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业 4.提供图片或网站显示的学习进 ...
 - 假期学习【六】Python网络爬虫2020.2.4
		
今天通过Python网络爬虫视频复习了一下以前初学的网络爬虫,了解了网络爬虫的相关规范. 案例:京东的Robots协议 https://www.jd.com/robots.txt 说明可以爬虫的范围 ...
 - 从零开始学Python网络爬虫PDF高清完整版免费下载|百度网盘
		
百度网盘:从零开始学Python网络爬虫PDF高清完整版免费下载 提取码:wy36 目录 前言第1章 Python零基础语法入门 11.1 Python与PyCharm安装 11.1.1 Python ...
 - 关于Python网络爬虫实战笔记③
		
Python网络爬虫实战笔记③如何下载韩寒博客文章 Python网络爬虫实战笔记③如何下载韩寒博客文章 target:下载全部的文章 1. 博客列表页面规则 也就是, http://blog.sina ...
 
随机推荐
- jquery版本更新后无live函数的处理.TypeError: $(...).live is not a function
			
jquery live函数语法 jquery版本更新, 发现一个问题: jq自带的live没有了.控制台下会有如下的提示:火狐: TypeError: $(...).live is not a fun ...
 - 🏆【Java技术专区】「延时队列专题」教你如何使用【精巧好用】的DelayQueue
			
延时队列前提 定时关闭空闲连接:服务器中,有很多客户端的连接,空闲一段时间之后需要关闭之. 定时清除额外缓存:缓存中的对象,超过了空闲时间,需要从缓存中移出. 实现任务超时处理:在网络协议滑动窗口请求 ...
 - 题解 P6688 可重集
			
己所欲者,杀而夺之,亦同天赐 解题思路 一定不要用自动溢出的 Hash!!!!!!! 我真的是调吐了... 思路非常简单明了 : 需要我们创新一下 Hash. 首先我们的 Hash 要满足无序性.. ...
 - WanJetpack项目:用Jetpack实现玩Android,追求最官方的实现方式
			
项目简介 玩Android demo.用Jetpack MVVM开发架构.单Activity多Fragment项目设计,项目结构清晰,代码简洁优雅,追求最官方的实现方式.用到以下知识点: LiveDa ...
 - Quartz 实现同一辅助类 重复开启多任务
			
前言: 最近做一个项目,需要用到定时任务,第一就想到了Quartz,然后很开心的就实现了功能,但是后来发现一个问题,如果需要开启多个定时任务,需要写多个辅助类,而辅助类里面的功能基本差不多,这是我就想 ...
 - 我的第一个开源项目 Kiwis2 Mockserver
			
我的第一个开源作品Kiwis2 Mock Server,目前公测中,欢迎大家提供宝贵意见. 代码:https://github.com/kiwis2/mockserver 主页:https://kiw ...
 - Linux - curl -w 参数详解
			
-w 的作用 完成请求传输后,使 curl 在 stdout 上显示自定义信息 格式是一个字符串,可以包含纯文本和任意数量的变量 输出格式 输出格式中的变量会被 curl 用对应的值替换掉 所有变量的 ...
 - Ubuntu安装ssh,及失败解决方案
			
网上有很多介绍在Ubuntu下开启SSH服务的文章,但大多数介绍的方法测试后都不太理想,均不能实现远程登录到Ubuntu上,最后分析原因是都没有真正开启ssh-server服务.最终成功的方法如下: ...
 - DVWA靶场之File Upload(文件上传)通关
			
Low: <?php if( isset( $_POST[ 'Upload' ] ) ) { // Where are we going to be writing to? $target_pa ...
 - 51单片机—LCD1602显示模块
			
文章目录 - 什么是LCD1602 - 如何操作LCD1602 - 上代码 - 什么是LCD1602 LCD:Liquid Crystal Display-液晶显示器,简称LCD,其主要显示原理是以电 ...