python爬虫爬取网上药品信息并且存入数据库

我最近在学习python爬虫,然后正好碰上数据库课设,我就选了一个连锁药店的,所以就把网上的药品信息爬取了下来。

1,首先分析网页

2,我想要的是评论数比较多的,毕竟好东西大概是买的人多才好。然后你会发现它的url地址是有规律的里面的j1是指第一页,j2第二页,这样构建一个url_list。

1   url_list = ‘https://www.111.com.cn/categories/953710-a0-b0-c31-d0-e0-f0-g0-h0-i0-j%s.html‘#然后循环获取响应
2
3   for i in range(1, 30):
4
5       response = requests.get(url_list % i, headers=headers)

3,然后就可以进行数据的提取,我是利用Chrome的xpath插件,不过一定要注意有时候你复制的xpath不一定准确需要自己分析

  我这里是演示提取价格,定位到价格选中后在Element里找到后点鼠标右键找到copy然后选择copy xpath,上面那个黑框就是xpath插件

    

4,连接数据库,我的数据库是mysql的

连接数据库的代码一般是这样

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import MySQLdb

# 打开数据库连接
db = MySQLdb.connect("localhost", "root", "123", "lianxi", charset=‘utf8‘  )

# 使用cursor()方法获取操作游标
cursor = db.cursor()

# 如果数据表已经存在使用 execute() 方法删除表。
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

# 创建数据表SQL语句
sql = """CREATE TABLE EMPLOYEE (
         FIRST_NAME  CHAR(20) NOT NULL,
         LAST_NAME  CHAR(20),
         AGE INT,
         SEX CHAR(1),
         INCOME FLOAT )DEFAULT CHARSET =utf8"""

cursor.execute(sql)

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 打开数据库连接
db = MySQLdb.connect("localhost", "root", "123", "lianxi", charset=‘utf8‘ )

# 使用cursor()方法获取操作游标
cursor = db.cursor()

# SQL 插入语句
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
         LAST_NAME, AGE, SEX, INCOME)
         VALUES (‘王‘, ‘Mohan‘, 20, ‘M‘, 2000)"""
try:
   # 执行sql语句
   cursor.execute(sql)
   # 提交到数据库执行
   db.commit()
except:
   # Rollback in case there is any error
   db.rollback()
   print("a")
# 关闭数据库连接
db.close()

这个我是参照菜鸟教程的https://www.runoob.com/python/python-mysql.html

5,最后把源码附上,还有数据库里爬取的数据

import requests
from lxml import etree
import pymysql
def get_text(text):
    if text:
        return text[0]
    return ‘‘
def create():
    db = pymysql.connect("localhost", "root", "123", "lianxi",charset=‘utf8‘)  # 连接数据库

    cursor = db.cursor()
    cursor.execute("DROP TABLE IF EXISTS a")

    sql = """CREATE TABLE a (
            ID INT PRIMARY KEY AUTO_INCREMENT,
            药物名字  char (255),
            药物价格  char (7),
            药物网址  CHAR(255),
            药店ID   char (6)      )DEFAULT CHARSET =utf8"""

    cursor.execute(sql)

    db.close()

    db = pymysql.connect("localhost", "root", "123", "lianxi",charset=‘utf8‘)

    cursor = db.cursor()
    url_list = ‘https://www.111.com.cn/categories/953710-a0-b0-c31-d0-e0-f0-g0-h0-i0-j%s.html‘
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36"}

    for i in range(1, 30):
        response = requests.get(url_list % i, headers=headers)
        re=response.text
        content = etree.HTML(re)

        li_list = content.xpath(‘//ul[@id="itemSearchList"]/li‘)
        ##单价,描述,评论数量,详情页链接
        for li in li_list:
            # print(li)
            price = get_text(li.xpath(
                ‘.//div[@isrecom="0"]/p[1]/textarea/span/text()|.//div[@isrecom="0"]/p[1]/span/text()|.//div[@isrecom="0"]/p[1]/span/u/text()‘)).strip()
            name = li.xpath(‘.//div[@isrecom="0"]/p[2]/a/text()‘)[1].strip()

            url = get_text(li.xpath(‘.//div[@class="itemSearchResultCon"]/a[1]/@href‘)).strip()
            infos = []
            item = {}
            item[‘价格‘] = price
            item[‘名字‘] = name

            item[‘地址‘] = ‘https:‘ + url
            infos.append(item)
            print(item[‘价格‘])
            print(item[‘地址‘])
            print(item[‘名字‘])
            a=1
            insert_sql = ‘INSERT INTO a (药物价格,药物名字,药物网址,药店ID) VALUES (%s,%s,%s,%s)‘
            cursor.execute(insert_sql, (item[‘价格‘],item[‘名字‘] ,item[‘地址‘],a))

    try:

        db.commit()
        print(‘插入数据成功‘)
    except:
        db.rollback()
        print("插入数据失败")
    db.close()
if __name__ == ‘__main__‘:
    create()

总结:第一次写博客,写的很粗糙,代码部分可能不是写的很美,毕竟我也是个小白,希望大家多多留言,提提意见,一同进步。

原文地址:https://www.cnblogs.com/suqingjiu/p/12144132.html

时间: 2024-11-09 08:27:15

python爬虫爬取网上药品信息并且存入数据库的相关文章

简易python爬虫 - 爬取站长论坛信息

爬取目标: 收集网站帖子里发帖人用户名,发帖人ID;帖子的ID,发帖内容;网站title 提前需要准备的python库 pip3 install requests //用于获得网站的源码 pip3 install bs4 //解析遍历网站标签 pip3 install urllib //解析网站的url 首先导入包 import requestsfrom bs4 import BeautifulSoupfrom urllib.parse import parse_qs,urlparse impo

Python爬虫爬取房天下数据-入MySql数据库

Python爬取房天下某城市数据 随着互联网时代的兴起,技术日新月异,掌握一门新技术对职业发展有着很深远的意义,做的第一个demo,以后会在爬虫和数据分析方便做更深的研究,本人不会做详细的文档,有哪里不足的地方,希望大牛们指点讲解.废话不多说,上代码. 你需要的技能: (1)对前端知识熟悉会调试浏览器 (2)熟练python基础知识,对一些常用的库熟练掌握 (3)掌握一般关系型数据库 import requests as req import time import pandas as pd f

python爬虫抓取哈尔滨天气信息

python 爬虫 爬取哈尔滨天气信息 - http://www.weather.com.cn/weather/101050101.shtml 环境: windows7 python3.4(pip install requests:pip install BeautifulSoup4) 代码:(亲测可以正确执行) 1 # coding:utf-8 2 """ 3 总结一下,从网页上抓取内容大致分3步: 4 1.模拟浏览器访问,获取html源代码 5 2.通过正则匹配,获取指定

用Python爬虫爬取广州大学教务系统的成绩(内网访问)

用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code] 在{}之前的部分就是"选择器"."选择器"指明了{}中的"样式"的作用对象,也就是"样式"作用于网页中的哪些元素.可参考:http://www.w3school.com.cn/cssref/css_selectors.asph

python爬虫—爬取英文名以及正则表达式的介绍

python爬虫—爬取英文名以及正则表达式的介绍 爬取英文名: 一.  爬虫模块详细设计 (1)整体思路 对于本次爬取英文名数据的爬虫实现,我的思路是先将A-Z所有英文名的连接爬取出来,保存在一个csv文件中:再读取csv文件当中的每个英文名链接,采用循环的方法读取每一个英文名链接,根据每个英文名链接爬取每个链接中的数据,保存在新的csv文件当中. 需要写一个爬取英文名链接的函数.将爬取的内容保存在csv文件的函数以及读取csv文件内容的函数.爬取英文名详情页内容的函数. 表5.3.1 函数名

python爬虫爬取微博评论案例详解

这篇文章主要介绍了python爬虫爬取微博评论,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 数据格式:{"name":评论人姓名,"comment_time":评论时间,"comment_info":评论内容,"comment_url":评论人的主页} 以上就是我们需要的信息. 具体操作流程: 我们首相将主页获取完成以后,我们就会发现,其中 的内容带有相

python爬虫爬取csdn博客专家所有博客内容

python爬虫爬取csdn博客专家所有博客内容: 全部过程采取自动识别与抓取,抓取结果是将一个博主的所有 文章存放在以其名字命名的文件内,代码如下 结果如下: 版权声明:本文为博主原创文章,未经博主允许不得转载.

python爬虫爬取美女图片

python 爬虫爬取美女图片 #coding=utf-8 import urllib import re import os import time import threading def getHtml(url): page = urllib.urlopen(url) html = page.read() return html def getImgUrl(html,src): srcre = re.compile(src) srclist = re.findall(srcre,html)

Python爬虫爬取博客园并保存

Python爬虫爬取博客园并保存        爬取博客园指定用户的文章修饰后全部保存到本地 首先定义爬取的模块文件: crawlers_main.py 执行入口 url_manager.py url管理器 download_manager.py 下载模块 parser_manager.py html解析器(解析html需要利用的内容) output_manager.py 输出html网页全部内容文件(包括css,png,js等) crawlers_main.py 执行入口 1 # coding