将python中爬取的数据保存到数据库中

要用python关联爬取数据,保存到数据库中

分两步,第一步就是爬取数据,第二步才是保存到数据库

    爬取数据

需要的头文件有:

# -*- coding:UTF-8 -*-
import pymysql as mdb
import pymysql.cursors
import requests
from bs4 import BeautifulSoup
import bs4
    解析网址
def getHTMLText(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""
    爬取数据
def fillnameList(ulist1, html):
    soup = BeautifulSoup(html, "html.parser")

    a = soup.find(div, class_=hcent_m1j_2n).findAll("dt")
    for i in a:
        tds = i("a")
        ulist1.append([tds[0].string])
def fillUnivList(ulist, html):
    soup = BeautifulSoup(html, "html.parser")

    a = soup.find(table, class_=text12).findAll("tr")
    for i in a:
        tds = i("td")
        ulist.append([tds[0].string, tds[1].string])
        # ulist.append([tds[1].string])
    将爬取的数据插入到mysql数据库
def printUnivList(ulist, num):
    # h=[]
    tplt = "{0:^10}	{1:^10}"#0表示位置,^表示居中,10表示占10个位置
    for i in range(num):
        if (i == 7) or (i == 0) or (i == 1):
            u = ulist[I]
            print(tplt.format(u[0].encode("utf-8"), u[1].encode("utf-8"),chr(255)))
    q = ulist[0]
    w = ulist[1]
    e = ulist[7]
    con = mdb.connect(localhost, root, zhanghang, nongyao);
    with con:
        cur = con.cursor()
        cur.execute(
            "INSERT INTO NongYao(nyname,cname,applications) VALUES(%s,%s,%s)" % (tplt.format(q[0].encode("utf-8"),
                                                                                            q[1].encode("utf-8"),
                                                                                                   chr(255)),
                                                                                       tplt.format(w[0].encode("utf-8"),
                                                                                                   w[1].encode("utf-8"),
                                                                                                   chr(255)),
                                                                                       tplt.format(e[0].encode("utf-8"),
                                                                                                   e[1].encode("utf-8"),
                                                                                                   chr(255))))
    执行
def work(ulist1, url_1, num):
    tplt = "{0:^10}"
    for i in range(num):
        # if (i==7)or(i==0)or(i==1)or(i==2):
        if i != 6:
            u = ulist1[i]
            url = url_1 + tplt.format(u[0].encode("utf-8"), chr(255))
            uinfo = []
            html = getHTMLText(url)
            fillUnivList(uinfo, html)
            printUnivList(uinfo, 10)
    main
def main():
    uinfo1 = []
     url =http://cheman.chemnet.com/pesticides/search.cgip=3&f=search&u=&c=cate2&s=&t=&terms=%C9%B1%BE%FA%BC%C1&r=
 html = getHTMLText(url)
    fillnameList(uinfo1, html)

    url_1 = http://cheman.chemnet.com/pesticides/supplier2.cgi?f=plist&exact=dict&mark=&terms2=
    work(uinfo1, url_1, 10)
经验分享 程序员 微信小程序 职场和发展