一、 前言
今天X先生带大家正真的实战:爬取医疗信息网站的图片及分类存储到本地和存储到MySql数据库。
读完本文,可能需要10到20分钟不等,你可以学到:Xpath语法再详解,实战,翻页、多页面爬取思想,数据存储三种方法:下载到本地、存储到Mysql数据库、存储到本地csv文件,开学前最后一批干货,满满的。
评论区置顶第一期赠书获奖名单(昨天已经在极简交流群里公布过啦!)
二、基本知识回顾
1.Xpath基本使用
1)安装方法
直接推荐方法:豆瓣源安装(其他安装方法自己可百度)
2)基础语法及使用学习:
【Python | 边学边敲边记】第五次:Xpath实战训练
该文章详细介绍了Xpath的基本使用方法,包括常用语法介绍。
2.数据库操作之Pymysql
1)安装方法
直接推荐方法:豆瓣源安装(其他安装方法自己可百度)
pip install -i https://pypi.douban.com/simple/ pymysql
2)基本使用介绍
import pymysql
# 数据库连接
conn = pymysql.connect(host = "localhost",port = 3306,user = "你的数据库登录名",
password = "你的数据库登录名",charset="utf8",database = "你的数据库名称")
# 使用cursor()方法获取操作游标
cur = conn.cursor()
# 执行sql语句(可以是增删查改任意操作)
cur.execute(sql)
# 提交会话
conn.commit()
# 关闭数据库连接
三、看代码,边学边敲边记Xpath系统实战训练
1.图解我们要爬取的网站
网站结构图解
我们爬取的主页面是http://www.med361.com,它的下面有很多医疗商品类别(图中我们用1:n的形式给出),而每一个category(类别)下又有多个product(商品)(图中我们用1:n的形式给出),当然进入详细商品主页面后,还会有很多url,后面爬取时细说。
2.访问主页面,利用Xpath来获取所有商品类别url
(1)基础代码
'''
author : 极简XksA
data : 2018.8.31
goal : 爬取医疗网站图片
'''
import requests
from lxml import etree
def get_respones_data(branch_url):
# requests 发送请求
get_response = requests.get(branch_url)
# 将返回的响应码转换成文本(整个网页)
get_data = get_response.text
# 解析页面
a = etree.HTML(get_data)
return a
# 主页面
mian_url = "http://www.med361.com"
# 发送请求,获取Xpath格式页面
response_01 = get_respones_data(mian_url)
# 不同医疗商品类别url
# 上一页
branch_url_1 = response_01.xpath("/html/body/div[2]/div/div/div/div[1]/ul/li/a/@href")
# 下一页
branch_url_2 = response_01.xpath("/html/body/div[2]/div/div/div/div[2]/ul/li/a/@href")
print(branch_url_1)
print(branch_url_2)
(2)Xpath路径选择分析
1)图片分析:
商品类别url分析01
商品类别url分析02
2)文字解说:
# 上一页
"/html/body/div[2]/div/div/div/div[1]/ul/li[1]/a"
"/html/body/div[2]/div/div/div/div[1]/ul/li[4]/a"
"/html/body/div[2]/div/div/div/div[1]/ul/li[10]/a"
# 下一页
"/html/body/div[2]/div/div/div/div[2]/ul/li[1]/a"
上面是我选取的几个不同类别的医疗商品的Xpath路径,可以发现规律,在改变的只有最后一个li标签,而我们要获