精华内容
下载资源
问答
  • 使用正则提取数据,请求库requests,看代码,在存入数据库时,报错ERROR 1054 (42S22): Unknown column ‘title' in ‘field list'。原来是我写sql 有问题,sql = “insert into poem(title,author,content,create_...

    使用正则提取数据,请求库requests,看代码,在存入数据库时,报错ERROR 1054 (42S22): Unknown column ‘title' in ‘field list'。原来是我写sql 有问题,sql = “insert into poem(title,author,content,create_time) values({},{},{},{})”.format(title, author,content,crate_time)应该写成sql = “insert into poem(title,author,content,create_time) values('{}','{}','{}','{}')”.format(title, author,content,crate_time)。

    把插入的值放入引号中。

    import datetime

    import re

    import pymysql

    import requests

    url = "https://www.gushiwen.org/"

    headers = {

    'User-Agent': "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50"}

    class Spiderpoem(object):

    conn = pymysql.Connect(host="localhost", port=3306, user="root", password='mysql', database='poem_data',

    charset="utf8")

    cs1 = conn.cursor()

    def get_requests(self, url, headers=None):

    """发送请求"""

    resp = requests.get(url, headers=headers)

    if resp.status_code == 200:

    # print(resp.request.headers)

    return resp.text

    return None

    def get_parse(self, response):

    """解析网页"""

    re_data = {

    "title": r'

    .*?(.*?).*?
    ',

    "author": r'

    .*?class="source">.*?(.*?).*?(.*?).*?

    ',

    "content": r'

    (.*?)
    '

    }

    titles = self.reg_con(re_data["title"], response)

    authors = self.reg_con(re_data["author"], response)

    poems_list = self.reg_con(re_data["content"], response)

    contents = list()

    for item in poems_list:

    ite = re.sub(r'<.*?>|\s', "", item)

    contents.append(ite.strip())

    for value in zip(titles, authors, contents):

    title, author, content = value

    author = "".join([author[0], '.', author[1]])

    poem = {

    "title": title,

    "author": author,

    "content": content

    }

    yield poem

    def reg_con(self, params, response):

    """正则匹配"""

    if not response:

    return "请求错误"

    param = re.compile(params, re.DOTALL) # re.DOTALL 匹配换行等价于re.S

    result = re.findall(param, response)

    return result

    @classmethod

    def save_data(cls, poem):

    title = poem.get("title")

    author = poem.get("author")

    content = poem.get("content")

    crate_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

    sql = "insert into poem(title,author,content,create_time) values('{}','{}','{}','{}')".format(title, author,

    content,

    crate_time)

    count = cls.cs1.execute(sql)

    print(count)

    cls.conn.commit()

    def main(self):

    resp = self.get_requests(url, headers)

    for it in self.get_parse(resp):

    self.save_data(it)

    self.cs1.close()

    self.conn.close()

    if __name__ == '__main__':

    Spiderpoem().main()

    总结

    以上所述是小编给大家介绍的python 爬取古诗文存入mysql数据库的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对IIS7站长之家网站的支持!

    展开全文
  • 前言爬取豆瓣的 top250 电影榜环境请自行 安装python 需要的包BeautifulSoupMySQL-python开始创建一个py文件 demo3.py分析页面结构 1.png导入一些包 2.png定义一个DouBanSpider类以及一些方法 3.png 4.png 5.png 6....
    展开全文
  • 1.首先,下载需要的模块requests, BeautifulSoup, datetime, pymysql(注意,因为我用的python3.7,不支持mysqldb了)...2.创建conndb,py,包含数据库的连接断开,增删改查等操作:#!/usr/bin/env python# -*- codin...

    1.首先,下载需要的模块requests, BeautifulSoup, datetime, pymysql(注意,因为我用的python3.7,不支持mysqldb了),具体的下载方法有pip下载,或者使用Anaconda版本python的童鞋可以使用conda下载。

    2.创建conndb,py,包含数据库的连接断开,增删改查等操作:

    #!/usr/bin/env python

    # -*- coding:utf-8 -*-

    import pymysql

    def conn_db(): # 连接数据库函数

    conn = pymysql.connect(

    host='localhost',

    user='数据库用户名',

    passwd='数据库密码',

    db='数据库名称',

    charset='utf8')

    cur = conn.cursor()

    return conn, cur

    def exe_update(cur, sql): # 更新语句,可执行update,insert语句

    sta = cur.execute(sql)

    return sta

    def exe_delete(cur, ids): # 删除语句,可批量删除

    for eachID in ids.split(' '):

    sta = cur.execute('delete from cms where id =%d' % int(eachID))

    return sta

    def exe_query(cur, sql): # 查询语句

    cur.execute(sql)

    return cur

    def exe_commit(cur):

    cur.connection.commit() # 执行commit操作,插入语句才能生效

    def conn_close(conn, cur): # 关闭所有连接

    cur.close()

    conn.close()

    3.创建另一个python文件,用于抓取数据(注意引入conndb.py文件):

    #!/usr/bin/env python

    # -*- coding:utf-8 -*-

    import requests

    from bs4 import BeautifulSoup

    import datetime

    import conndb

    def get_html_text(url):

    try:

    r = requests.get(url, timeout=30)

    # r.encoding = r.apparent_encoding

    r.encoding = 'utf-8' # 编码方式

    # print(r.text)

    return r.text

    except BaseException as e:

    print('BaseException:', e)

    return ""

    def get_content(url):

    html = get_html_text(url)

    # print(html)

    soup = BeautifulSoup(html, 'html.parser')

    title = soup.select(".list-point > .item") # 此处为BeautifulSoup的CSS选择器,括号内为通过类名选择

    today = datetime.datetime.now().strftime('%Y-%m-%d') # 获取今天的日期,用于抓取新闻时判断抓取今天的内容

    for item in title:

    time = item.find('span').string # 新闻创建日期

    time1 = '20' + time[0: time.index(" ")] # 日期字符串格式处理,便于比较

    if time1 == today: # 新闻的创建日期是今天

    url = item.find('a')['href'] # 获取单条新闻链接,用户单条新闻抓取

    title = item.find('a').string

    # print(title + time + url)

    get_new_content(url, title, time)

    def get_new_content(url, title, tim1):

    html = get_html_text(url)

    # print(html)

    soup = BeautifulSoup(html, 'html.parser')

    p = soup.select(".article-content > p")

    # print(p)

    # for item in p:

    # if item.find('img'):

    # print(item.find('img')['src'])

    # else:

    # print(item.string)

    # 调用更新记录的函数

    p_str = str(p) # p为标签,要转化为字符串,并去掉前后的[]符号

    length = len(p_str)

    utf8_length = len(p_str.encode('utf-8'))

    length = (utf8_length - length) / 2 + length

    p_str = p_str[1: int(length)]

    tim2 = datetime.datetime.strptime('20' + tim1, '%Y-%m-%d %H:%M') # 将字符串格式的日期转为数据库要求的datetime

    sta = conndb.exe_update(cur,

    "insert into cms(title, content, gmt_create) "

    "values('%s','%s','%s')" % (title, p_str, tim2))

    if sta == 1:

    print('插入成功')

    else:

    print('插入失败')

    def main():

    url = "抓取的页面url"

    get_content(url)

    # 调用连接数据库的函数

    conn, cur = conndb.conn_db()

    main()

    conndb.exe_commit(cur) # 注意!! 一定要记得commit,否则操作成功了,但是并没有添加到数据库中

    conndb.conn_close(conn, cur)

    这样,抓取到的数据就可以保存到数据库中了。

    展开全文
  • 爬取小说网站的小说,并保存到数据库第一步:先获取小说内容#!/usr/bin/python# -*- coding: UTF-8 -*-import urllib2,redomain = 'http://www.quanshu.net'headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.3;...

    爬取小说网站的小说,并保存到数据库

    第一步:先获取小说内容#!/usr/bin/python

    # -*- coding: UTF-8 -*-

    import urllib2,re

    domain = 'http://www.quanshu.net'

    headers = {

    "User-Agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"

    }

    def getTypeList(pn=1): #获取分类列表的函数

    req = urllib2.Request('http://www.quanshu.net/map/%s.html' % pn) #实例将要请求的对象

    req.headers = headers #替换所有头信息

    #req.add_header() #添加单个头信息

    res = urllib2.urlopen(req) #开始请求

    html = res.read().decode('gbk') #decode解码,解码成Unicode

    reg = r'(.*?)'

    reg = re.compile(reg) #增加匹配效率 正则匹配返回的类型为List

    return re.findall(reg,html)

    def getNovelList(url): #获取章节列表函数

    req = urllib2.Request(domain + url)

    req.headers = headers

    res = urllib2.urlopen(req)

    html = res.read().decode('gbk')

    reg = r'

    (.*?)'

    reg = re.compile(reg)

    return re.findall(reg,html)

    def getNovelContent(url): #获取章节内容

    req = urllib2.Request(domain + url)

    req.headers = headers

    res = urllib2.urlopen(req)

    html = res.read().decode('gbk')

    reg = r'style5\(\);(.*?)

    return re.findall(reg,html)[0]

    if __name__ == '__main__':

    for type in range(1,10):

    for url,title in getTypeList(type):

    for zurl,ztitle in getNovelList(url):

    print u'正则爬取----%s' %ztitle

    content = getNovelContent(url.replace('index.html',zurl))

    print content

    break

    break

    执行后结果如下:

    wKiom1kpIdThRNdaAAIyGKHHJXo728.png

    第二步:存储到数据库

    1、设计数据库

    1.1 新建库:novel

    wKiom1kpOr7yfa9aAABoSmd-OnA036.png

    1.2 设计表:novel

    wKioL1kpOvXi6UDzAABUheeLxB0623.png

    1.3 设计表:chapter

    wKiom1kpO4CgKxdUAAB6tbFOxwU677.png

    并设置外键

    wKioL1kpO4CANrBSAABInMXtb-E068.png

    2、编写脚本#!/usr/bin/python

    # -*- coding: UTF-8 -*-

    import urllib2,re

    import MySQLdb

    class Sql(object):

    conn = MySQLdb.connect(host='192.168.19.213',port=3306,user='root',passwd='Admin123',db='novel',charset='utf8')

    def addnovels(self,sort,novelname):

    cur = self.conn.cursor()

    cur.execute("insert into novel(sort,novelname) values(%s , '%s')" %(sort,novelname))

    lastrowid = cur.lastrowid

    cur.close()

    self.conn.commit()

    return lastrowid

    def addchapters(self,novelid,chaptername,content):

    cur = self.conn.cursor()

    cur.execute("insert into chapter(novelid,chaptername,content) values(%s , '%s' ,'%s')" %(novelid,chaptername,content))

    cur.close()

    self.conn.commit()

    domain = 'http://www.quanshu.net'

    headers = {

    "User-Agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"

    }

    def getTypeList(pn=1): #获取分类列表的函数

    req = urllib2.Request('http://www.quanshu.net/map/%s.html' % pn) #实例将要请求的对象

    req.headers = headers #替换所有头信息

    #req.add_header() #添加单个头信息

    res = urllib2.urlopen(req) #开始请求

    html = res.read().decode('gbk') #decode解码,解码成Unicode

    reg = r'(.*?)'

    reg = re.compile(reg) #增加匹配效率 正则匹配返回的类型为List

    return re.findall(reg,html)

    def getNovelList(url): #获取章节列表函数

    req = urllib2.Request(domain + url)

    req.headers = headers

    res = urllib2.urlopen(req)

    html = res.read().decode('gbk')

    reg = r'

    (.*?)'

    reg = re.compile(reg)

    return re.findall(reg,html)

    def getNovelContent(url): #获取章节内容

    req = urllib2.Request(domain + url)

    req.headers = headers

    res = urllib2.urlopen(req)

    html = res.read().decode('gbk')

    reg = r'style5\(\);(.*?)

    return re.findall(reg,html)[0]

    mysql = Sql()

    if __name__ == '__main__':

    for sort in range(1,10):

    for url,title in getTypeList(sort):

    lastrowid = mysql.addnovels(sort, title)

    for zurl,ztitle in getNovelList(url):

    print u'正则爬取----%s' %ztitle

    content = getNovelContent(url.replace('index.html',zurl))

    print u'正在存储----%s' %ztitle

    mysql.addchapters(lastrowid,ztitle,content)

    3、执行脚本

    wKioL1kpO_SwfYOdAAHAvlowP2k275.png

    4、查看数据库

    wKioL1kpRJ7hsGI_AABKvJGXbtY583.png

    wKioL1kpRKvyQVNUAAEwW-UKPY8568.png

    可以看到已经存储成功了。

    报错:

    _mysql_exceptions.OperationalError: (1364, "Field 'novelid' doesn't have a default value")

    解决:执行sql语句

    SELECT @@GLOBAL.sql_mode;

    SET @@GLOBAL.sql_mode="NO_ENGINE_SUBSTITUTION";

    wKioL1kpPCXjTHm5AABPJKISpZs573.png

    报错参考:http://blog.sina.com.cn/s/blog_6d2b3e4901011j9w.html

    展开全文
  • 利用Python爬虫实现爬取网站中的数据并存入MySQL数据库中发布时间:2020-11-07 15:36:26来源:亿速云阅读:63今天就跟大家聊聊有关利用Python爬虫实现爬取网站中的数据并存入mysql数据库中,可能很多人都不太了解,...
  • 我最近在学习python爬虫,然后正好碰上数据库课设,我就选了一个连锁药店的,所以就把网上的药品信息爬取了下来。1,首先分析网页2,我想要的是评论数比较多的,毕竟好东西大概是买的人多才好。然后你会发现它的url...
  • usr/bin/python# -*- coding:utf-8 -*-import urllib2import reimport MySQLdbclass BaiDuNews:def __init__(self):self.baseurl = 'http://news.baidu.com/'def getPage(self):request = urllib2.Request(self.ba.....
  • python爬取内容存入Excel实例来源:中文源码网 浏览: 次 日期:2019年11月5日【下载文档: python爬取内容存入Excel实例.txt 】(友情提示:右键点上行txt文档名->目标另存为)python爬取内容存入Excel实例最近老师布置...
  • python爬取静态数据并存入数据库 连接mysql数据库 导入pymysql,连接数据库 import pymysql db = pymysql.connect('ip','QINYUYOU','密码','homework') cursor = db.cursor() print('连接成功') 爬取数据 我们爬取...
  • 主要介绍了python 爬取古诗文存入mysql数据库的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • python爬取的小说存入mysql数据库

    千次阅读 2017-10-22 15:03:58
    python爬取的小说存入mysql数据库
  • python源码(无框架)# -*- coding: utf-8 -*-import requestsfrom lxml import etreeimport jsonimport reimport pandas as pdimport numpy as npimport pymysqlcookie = ""header = {"User-Agent": "Mozilla/5.0 ...
  • python爬虫爬取数据并存到数据库 1----------------------------------------------------------------------编写爬虫,下载数据 2----------------------------------------------------------------------处理...
  • python爬取B站文章信息并存入数据库

    万次阅读 2021-02-09 12:20:53
    前言 学了点selenium和python操作数据库 ...看B站文章的时候想到能不能把这些爬下来存入数据库(作者名字,标题,链接)内容就不爬了 虽然爬下来的数据没什么用,但也是一个小练习,促进自己成长 目标网页 ...
  • 既然要存入数据库,那必然需要进行数据库连接,通过Python里面的pymysql驱动去链接我们的mysql数据库,然后建立数据库游标,用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。...
  • 爬取王者荣耀英雄信息存入数据库 爬取:requests,lxml 数据库插入数据:pymysql import requests from lxml import etree import pymysql headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,145
精华内容 2,058
关键字:

python爬取存入数据库

python 订阅