Python爬虫获取数据保存到数据库中的超详细教程(一看就会)

目录
  • 1.简介介绍
  • 2.Xpath获取页面信息
  • 3.通过Xpath爬虫实操
    • 3-1.获取xpath
    • 完整代码展示:
  • 总结

1.简介介绍

-网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
-一般在浏览器上可以获取到的,通过爬虫也可以获取到,常见的爬虫语言有PHP,JAVA,C#,C++,Python,为啥我们经常听到说的都是Python爬虫,这是因为python爬虫比较简单,功能比较齐全。

2.Xpath获取页面信息

通过Xpath进行爬虫就是获取到页面html后通过路径的表达式来选取标签节点,沿着路径选取需要爬取的数据。

Xpath常用表达式:

表达式 描述
/ 从根节点选取(取子节点)
// 选择的当前节点选择文档中的节点
. 选取当前节点。
选取当前节点的父节点。
@ 选取属性
* 表示任意内容(通配符)
| 运算符可以选取多个路径

Xpath常用函数:

函数 用法 解释
startswith() xpath(‘//div[starts-with(@id,”celent”)]‘) #选取id值以celent开头的div节点
contains() xpath(‘//div[contains(@id,”celent”)]‘) #选取id值包含celent的div节点
and() xpath(‘//div[contains(@id,”celent”) and contains(@id,”in”)]‘) #选取id值包含celent的div节点
text() _.xpath(’./div/div[4]/a/em/text()’) #选取em标签下文本内容

Xpath实操解析:

# 案例1
# //为从当前html中选取节点;[@class="c1text1"]为获取所有的class为c1text1的节点;/h1[1]为选取的节点下的第一个h1节点,如果没有[1]则是获取所有的,可以通过循环进行获取数据
etreeHtml.xpath('//*[@class="c1text1"]/h1[1]/text()')

# 案例2
#//为从当前html中选取节点;[@class="c1text1"]为获取所有的class为c1text1的节点;/a为获取当前节点下的所有a标签节点,得到一个ObjectList;通过for循环获取里面每个标签数据,./@src为获取当前节点的src属性值
etreeHtml2 = etreeHtml.xpath('//*[@class="c1text1"]/a')
for _ in etreeHtml2:
	etreeHtml.xpath(./@src)

3.通过Xpath爬虫实操

本次实例以爬取我的CSDN文章列表信息保存到数据库为案列

3-1.获取xpath

通过F12打开开发者模式,点击左上角图标可参考下图,选择需要爬取数据的容器,在右边选择复制选择xpath就可以得到xpath路径了(//*[@id=“userSkin”]/div[2]/div/div[2]/div[1]/div[2]/div/div);

完整代码展示:

# 导入需要的库
import requests
from lxml import etree
import pymysql

# 文章详情信息类
class articleData():
    def __init__(self, title, abstract, path,date):
        self.title = title #文章名称
        self.abstract = abstract #文章摘要
        self.path = path #文章路径
        self.date = date #发布时间

    def to_string(self):
        print("文章名称:"+self.title
              +";文章摘要:"+self.abstract
              +";文章路径:"+self.path
              +";发布时间:"+self.date)

#保存狗狗详情数据
#保存数据
def saveData(DataObject):
    count = pymysql.connect(
        host='xx.xx.xx.xx',  # 数据库地址
        port=3306,  # 数据库端口
        user='xxxxx',  # 数据库账号
        password='xxxxxx',  # 数据库密码
        db='xxxxxxx'  # 数据库名
    )
    # 创建数据库对象
    db = count.cursor()
    # 写入sql
    # print("写入数据:"+DataObject.to_string())
    sql = f"insert into article_detail(title,abstract,alias,path,date) " \
          f"values ('{DataObject.title}','{DataObject.abstract}','{DataObject.path}','{DataObject.date}')"
    # 执行sql
    print(sql)
    db.execute(sql)
    # 保存修改内容
    count.commit()
    db.close()

# 爬取数据的方向
def getWebData():
    # 网站页面路径
    url = "https://blog.csdn.net/BadBoyxiaolin?spm=1000.2115.3001.5343"
    # 请求头,模拟浏览器请求
    header = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36"
    }
    # 获取页面所有节点代码
    html = requests.get(url=url, headers=header)
    # 打印页面代码查看
    # print(html.text)
    # 如果乱码可以设置编码格式
    # html.encoding = 'gb2312'
    # 通过xpath获取数据对应节点
    etreeHtml = etree.HTML(html.text)
    dataHtml = etreeHtml.xpath('//*[@class="mainContent"]/div/div/div')
    # 循环获取数据
    for _ in dataHtml:
        # ''.join()是将内容转换为字符串可以后面接replace数据进行处理
        title = ''.join(_.xpath('./article/a/div[1]/h4/text()'))#文章标题
        abstract = ''.join(_.xpath('./article/a/div[2]/text()'))#文章摘要
        path = ''.join(_.xpath('./article/a/@href'))#文章路径
        date = ''.join(_.xpath('./article/a/div[3]/div/div[2]/text()')).replace(' ','').replace('·','').replace('发布博客','')#发布时间
        #初始化文章类数据
        article_data = articleData(title,abstract,path,date)
        article_data.to_string() #打印数据看看是否对
        #保存数据到数据库
        # saveData(article_data)

if __name__ == "__main__":
    getWebData()

总结

到此这篇关于Python爬虫获取数据保存到数据库中的文章就介绍到这了,更多相关Python爬虫数据保存到数据库内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python爬虫爬取全球疫情数据并存储到mysql数据库的步骤

    思路:使用Python爬虫对腾讯疫情网站世界疫情数据进行爬取,封装成一个函数返回一个    字典数据格式的对象,写另一个方法调用该函数接收返回值,和数据库取得连接后把    数据存储到mysql数据库. 一.mysql数据库建表 CREATE TABLE world( id INT(11) NOT NULL AUTO_INCREMENT, dt DATETIME NOT NULL COMMENT '日期', c_name VARCHAR(35) DEFAULT NULL COMMENT '国家'

  • Python3爬虫学习之MySQL数据库存储爬取的信息详解

    本文实例讲述了Python3爬虫学习之MySQL数据库存储爬取的信息.分享给大家供大家参考,具体如下: 数据库存储爬取的信息(MySQL) 爬取到的数据为了更好地进行分析利用,而之前将爬取得数据存放在txt文件中后期处理起来会比较麻烦,很不方便,如果数据量比较大的情况下,查找更加麻烦,所以我们通常会把爬取的数据存储到数据库中便于后期分析利用. 这里,数据库选择MySQL,采用pymysql 这个第三方库来处理python和mysql数据库的存取,python连接mysql数据库的配置信息 db_

  • Python3实现的爬虫爬取数据并存入mysql数据库操作示例

    本文实例讲述了Python3实现的爬虫爬取数据并存入mysql数据库操作.分享给大家供大家参考,具体如下: 爬一个电脑客户端的订单.罗总推荐,抓包工具用的是HttpAnalyzerStdV7,与chrome自带的F12类似.客户端有接单大厅,罗列所有订单的简要信息.当单子被接了,就不存在了.我要做的是新出订单就爬取记录到我的数据库zyc里. 设置每10s爬一次. 抓包工具页面如图: 首先是爬虫,先找到数据存储的页面,再用正则爬出. # -*- coding:utf-8 -*- import re

  • python爬虫的数据库连接问题【推荐】

    1.需要导的包 import pymysql 2.# mysql连接信息(字典形式) db_config ={ 'host': '127.0.0.1',#连接的主机id(107.0.0.1是本机id) 'port': 3306, 'user': '****', 'password': '****', 'db': 'test',#(数据库名) 'charset': 'utf8' } 3.# 获得数据库连接 connection = pymysql.connect(**db_config) conn

  • python爬虫构建代理ip池抓取数据库的示例代码

    爬虫的小伙伴,肯定经常遇到ip被封的情况,而现在网络上的代理ip免费的已经很难找了,那么现在就用python的requests库从爬取代理ip,创建一个ip代理池,以备使用. 本代码包括ip的爬取,检测是否可用,可用保存,通过函数get_proxies可以获得ip,如:{'HTTPS': '106.12.7.54:8118'} 下面放上源代码,并详细注释: import requests from lxml import etree from requests.packages import u

  • Python爬虫获取数据保存到数据库中的超详细教程(一看就会)

    目录 1.简介介绍 2.Xpath获取页面信息 3.通过Xpath爬虫实操 3-1.获取xpath 完整代码展示: 总结 1.简介介绍 -网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕虫.-一般在浏览器上可以获取到的,通过爬虫也可以获取到,常见的爬虫语言有PHP,JAVA,C#,C++,Python,为啥我们经常听到说的都是Python爬虫,这是

  • Android学习笔记-保存数据到SQL数据库中(Saving Data in SQL Databases)

    知识点: 1.使用SQL Helper创建数据库 2.数据的增删查改(PRDU:Put.Read.Delete.Update) 背景知识: 上篇文章学习了android保存文件,今天学习的是保存数据到SQL数据库中.相信大家对数据库都不陌生.对于大量重复的,有特定结构的数据的保存,用 SQL数据库 来保存是最理想不过了. 下面将用一个关于联系人的数据库Demo来具体学习. 具体知识: 1.定义Contract类 在创建SQL数据库之前,要创建Contract类.那什么是Contract类呢? 复

  • 详解用Python爬虫获取百度企业信用中企业基本信息

    一.背景 希望根据企业名称查询其经纬度,所在的省份.城市等信息.直接将企业名称传给百度地图提供的API,得到的经纬度是非常不准确的,因此希望获取企业完整的地理位置,这样传给API后结果会更加准确. 百度企业信用提供了企业基本信息查询的功能.希望通过Python爬虫获取企业基本信息.目前已基本实现了这一需求. 本文最后会提供具体的代码.代码仅供学习参考,希望不要恶意爬取数据! 二.分析 以苏宁为例.输入"江苏苏宁"后,查询结果如下: 经过分析,这里列示的企业信息是用JavaScript动

  • Python爬虫获取国外大桥排行榜数据清单

    目录 目标站点分析 编码时间 前言: 本例开始学习 PyQuery 解析框架,该解析对从前端转 Python 的朋友非常友好,因为它模拟的是 JQuery 操作. 正式开始前,先安装 pyquery 到本地开发环境中.命令如下:pip install pyquery ,我使用的版本为 1.4.3. 基本使用如下所示,看懂也就掌握了 5 成了,就这么简单. from pyquery import PyQuery as pq s = '<html><title>橡皮擦的PyQuery小

  • Python爬虫获取整个站点中的所有外部链接代码示例

    收集所有外部链接的网站爬虫程序流程图 下例是爬取本站python绘制条形图方法代码详解的实例,大家可以参考下. 完整代码: #! /usr/bin/env python #coding=utf-8 import urllib2 from bs4 import BeautifulSoup import re import datetime import random pages=set() random.seed(datetime.datetime.now()) #Retrieves a list

  • Python爬虫获取图片并下载保存至本地的实例

    1.抓取煎蛋网上的图片. 2.代码如下: import urllib.request import os #to open the url def url_open(url): req=urllib.request.Request(url) req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.3; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0') response=urllib.request.u

  • C#中把FastReport.Net报表控件的数据保存到数据库

    通常报表都存储在一个地方,但是在单独的文件中.随着文件数量的增加在结构和搜索上也困难多多,针对这个问题,我遇到了一个非常有趣的报表对象属性——ReportSourceString,此属性以字符串形式保存整个报表模板.这意味着它可以在任何数据库中存储报表模板,并把所有的报表都存储在一个地方.为了将报表保存到数据库中,我们需要编写自己的方法来保存和加载报表.下面就开始吧!首先,让我们创建一个数据库来存储报表.我已经使用了微软的访问.该表的结构如下: 创建窗体应用程序.添加连接到数据库.放置按钮组件到

  • python爬虫获取淘宝天猫商品详细参数

    首先我是从淘宝进去,爬取了按销量排序的所有(100页)女装的列表信息按综合.销量分别爬取淘宝女装列表信息,然后导出前100商品的 link,爬取其详细信息.这些商品有淘宝的,也有天猫的,这两个平台有些区别,处理的时候要注意.比如,有的说"面料".有的说"材质成分",其实是一个意思,等等.可以取不同的链接做一下测试. import re from collections import OrderedDict from bs4 import BeautifulSoup

  • Python爬虫获取基金列表

    目录 1 前言 2 哪里去获取数据呢 3 怎么抓取数据呢 1 前言 python爬虫用来收集数据是最直接和常用的方法,可以使用python爬虫程序获得大量的数据,从而变得非常的简单和快速:绝大多数网站使用了模板开发,使用的模板可以快速生成大量相同布局不同内容的页面,这时只需要为一个页面开发爬虫程序,因为爬虫程序也可以对同一模板生成的不同内容进行爬取内容 2 哪里去获取数据呢 这里给大家准备好了,打开这个连接,就能找看到对应的基金信息: http://fund.eastmoney.com/jzzz

  • Python爬虫获取基金基本信息

    目录 1 前言 2 如何抓取基本信息 3 xpath 获取数据 4 bs4 获取数据 5 最终结果展现 1 前言 上篇文章Python爬虫获取基金列表我们已经讲述了如何从基金网站上获取基金的列表信息.这一骗我们延续上一篇,继续分享如何抓取基金的基本信息做展示.展示的内容包括基金的基本信息,诸如基金公司,基金经理,创建时间以及追踪标.持仓明细等信息. 2 如何抓取基本信息 # 在这里我就直接贴地址了,这个地址的获取是从基金列表跳转,然后点基金概况就可以获取到了. http://fundf10.ea

随机推荐