首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

运用Python的PyMySQL库,将爬取的信息存储在MySQL数据库中

一股清流同学今天终于将Python爬虫与MySQL数据库联系起来存储爬虫数据,所以特意写个小Tips记录下这“单纯而美好”的时刻。(大神请一笑而过~)

以爬取豆瓣电影TOP250的数据为例,需要爬取的信息有:电影名称、导演、主演、类型、制片国家、上映时间、片长、评分等。下面开始理论与实践的结合。

01

pymysql库连接MySQL数据库

导入模块:import pymysql

pymysql.connect()方法连接数据库,pymysql.corsur()方法连接光标。

02

在MySQL可视化工具workbench中建立数据表

在可视化工具workbench中建立数据表,也可以通过SQL语句建立数据表。可视化工具可以根据自己的需要来选择。数据类型为可变长度字符串VARCHAR(),长度尽量写大一点。

03

爬取进入电影详细页的URL

本次爬虫在电影的详细页面爬取,首先要爬取进入详细页的连接,然后再爬取电影的具体信息。

代码如下:

此前要先伪装请求头headers,这里不赘述。

还需导入lxml库,利用Xpath语法来提取数据。

from lxml import etree

提取到所有进入电影详细信息页面的URL后,就可以在详细页面获取电影信息啦!

04

利用正则表达式和Xpath语法获取电影详细信息

详细页面的标签比较复杂,我们综合利用正则表达式和Xpath语法共同提取电影详细数据。

通过try/except语句来处理异常,因为有些电影的链接已经不存在了。

try:

except IndexError:

pass

通过string(.)方法,在标签套标签的情况下,可以同时获取文本内容。

利用etree.HTML()初始化解析数据。

/text()可以获取标签中的文字信息。

re.findall()函数,以列表的形式返回所有符合匹配的内容。

re.S可以跨行匹配。

05

执行SQL语句,将获取的信息插入数据库

cursor.execute()用来执行单条sql语句。

insert into 插入数据信息。

到这里可谓万事俱备只欠东风啦!

06

定义URL列表,运行主程序

导入random模块,random.randint(a,b)函数随机地一个a-b之间的整数,每循环一次获取一个随机时间,让程序暂停一次几秒钟,防止请求频率过快而导致爬虫失败。

conn.commit()用来提交事务,完成数据的导入。

07

将workbench数据表导出为CSV文件

程序的运行结果可在workbench中查看,通过Export按钮可以导出数据表。

用Excel打开文件查看爬取的电影详细信息:

大功告成啦!

第一次写推文,对爬虫还不是很熟悉,程序可能会有一些小错误,请大家不吝赐教。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180309G1AAL000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券