“
一股清流同学今天终于将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打开文件查看爬取的电影详细信息:
大功告成啦!
第一次写推文,对爬虫还不是很熟悉,程序可能会有一些小错误,请大家不吝赐教。
领取专属 10元无门槛券
私享最新 技术干货