python3爬取数据导入mysql_Python3.x使用requests库将爬取数据存储到MySQL

class Douban:

def __init__(self):

#模拟请求头

self.header={

"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",

"Accept-Language": "zh-CN,zh;q=0.9",

"Cache-Control": "max-age=0",

"Connection": "keep-alive",

"Host": "movie.douban.com",

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

}

def get_html(self,url): #获取页面

try:

resopnse = requests.get(url, headers=self.header)

resopnse.encoding = "utf-8"

resopnse.status_code

html = resopnse.text

return html

except Exception as e:

print("页面获取失败"+e)

return ""

def detail_url(self,html): #获取详情页面的url

html = etree.HTML(html)

durl = html.xpath('//ol[@class="grid_view"]/li//div[@class="pic"]/a/@href')

for url in durl:

self.detail_html(url)

time.sleep(2)

self.next_html(html)

def next_html(self,html): #获取下一页

n_url = html.xpath('//span[@class="next"]/a/@href')[0]

next_url = "https://movie.douban.com/top250"+n_url

if next_url:

print("="*1000,next_url)

html = self.get_html(next_url)

self.detail_url(html)

def detail_html(self,url): #获取详情页面的信息

htmls = self.get_html(url)

html = etree.HTML(htmls)

name = "".join(html.xpath('//div[@id="content"]/h1//span/text()')) # 获取名字标题

img_url = html.xpath('//div[@id="mainpic"]/a/img/@src')[0] #图片地址

daoyan = html.xpath('//div[@id="info"]/span[1]/span[2]/a/text()')[0] #导演

bianju = "".join(html.xpath('//div[@id="info"]/span[2]/span[2]//a/text()')) #编剧

zhuyan = "".join(html.xpath('//div[@id="info"]/span[3]/span[2]//text()')).replace("/",",") #主演

type = "".join(html.xpath('//span[@property="v:genre"]/text()'))#类型

score = html.xpath('//strong[contains(@class,"rating_num")]/text()')[0] # 获取评分

zu = (name,img_url,daoyan,bianju,zhuyan,type,score)

print(zu)

self.insert_table(zu)

def lian(self): # 连接数据库

username = "root"

password = "root"

path = "localhost"

dbname = "python_test"

db = pymysql.connect(path,username,password,dbname)

return db

def create_table(self): #创建表

cursor= self.lian().cursor()

cursor.execute("drop table if exists test3")

sql = """

create table test3(

id int primary key auto_increment,

name varchar(255),

img_url varchar(255),

daoyan varchar(255),

bianju varchar(255),

zhuyan text,

type varchar(255),

score varchar(255)

)character set utf8

"""

cursor.execute(sql)

def insert_table(self,zu): #添加数据到数据库

try:

cursor = self.lian().cursor()

sql = "insert into test3(name,img_url,daoyan,bianju,zhuyan,type,score) value(%s,%s,%s,%s,%s,%s,%s) "

cursor.execute(sql, zu)

self.lian().commit()

except:

self.lian().rollback()

print("添加失败")

def run(self):

self.create_table() #创建表

url = "https://movie.douban.com/top250"

html = self.get_html(url)

self.detail_url(html)

self.lian().close() #关闭数据库

# print(html)

if __name__ == '__main__':

d = Douban()

d.run()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现数据采集和存储主要分为两个部分:数据采集和数据存储。其中,数据采集使用Python中的requests数据存储使用MySQL数据。 一、数据采集 1. 安装requests 使用pip命令安装requests: ``` pip install requests ``` 2. 发送HTTP请求 使用requests发送HTTP请求,获取网页内容。通过requests.get()方法发送GET请求,代码如下: ```python import requests url = 'https://www.example.com' response = requests.get(url) ``` 其中,url为目标网页的URL地址,response为请求返回的响应对象。 3. 解析HTML内容 获取到网页内容之后,需要对HTML内容进行解析,提取所需的数据。这里可以使用Python中的BeautifulSoup进行解析,代码如下: ```python from bs4 import BeautifulSoup soup = BeautifulSoup(response.text, 'html.parser') ``` 其中,response.text为获取到的HTML内容,'html.parser'为解析器类型,可以根据实际情况选择不同的解析器。 4. 提取数据 通过BeautifulSoup提供的方法,可以很方便地提取HTML内容中的数据。这里以提取网页标题为例,代码如下: ```python title = soup.title.string ``` 其中,soup.title.string表示获取HTML中的title标签,.string表示获取标签中的文本内容。 二、数据存储 1. 安装MySQL数据 首先需要安装MySQL数据,可以从官网下载安装包,也可以使用apt-get等命令进行安装。 2. 连接数据 使用Python中的pymysql连接MySQL数据,代码如下: ```python import pymysql db = pymysql.connect(host='localhost', user='root', password='password', port=3306) cursor = db.cursor() ``` 其中,host为MySQL服务器地址,user为MySQL登录用户名,password为MySQL登录密码,port为MySQL服务器端口号。 3. 创建数据数据表 在MySQL数据中创建一个新的数据数据表,用于存储采集到的数据。可以使用MySQL命令行或者可视化工具创建数据数据表。 4. 存储数据 将采集到的数据存储MySQL数据中,代码如下: ```python sql = 'INSERT INTO table_name (col1, col2, col3) VALUES ("%s", "%s", "%s")' % (value1, value2, value3) cursor.execute(sql) db.commit() ``` 其中,table_name为数据表名称,col1、col2、col3为数据表中的列名,value1、value2、value3为采集到的数据。execute()方法执行SQL语句,commit()方法提交事务。 完成以上操作,就可以实现数据采集和存储了。当然,具体实现还需要根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值