使用python爬取简书首页的文章标题和链接,存入mysql数据库
如果pymysql还未安装,需要在命令行输入:
pip install pymysql
在运行代码前要注意:
- 已有一个mysql数据库,并且已启动
- 该数据库的用户名和密码
- 有一个有权限操作的database
- 数据库中建好要存入数据的表
代码:
from urllib import request
from bs4 import BeautifulSoup #Beautiful Soup是一个可以从HTML或XML文件中提取结构化数据的Python库
import pymysql #导入pymysql模块
#构造头文件,模拟浏览器访问
url="http://www.jianshu.com"
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
page = request.Request(url,headers=headers)
page_info = request.urlopen(page).read().decode('utf-8')#打开Url,获取HttpResponse返回对象并读取其ResposneBody
# 将获取到的内容转换成BeautifulSoup格式,并将html.parser作为解析器
soup = BeautifulSoup(page_info, 'html.parser')
# 以格式化的形式打印html
#print(soup.prettify())
titles = soup.find_all('a', 'title')# 查找所有a标签中class='title'的语句
#连接database
conn=pymysql.connect(host="",port=,user="",password="",database="",charset="utf8")
#得到一个可以执行SQL语句的光标对象
cursor=conn.cursor()
for title in titles:
#定义要执行的SQL语句
sql="INSERT INTO a_test(title,url) VALUES(%s,%s);"
a=title.string
b="http://www.jianshu.com" + title.get('href')
print(a)
print(b)
try:
#执行SQL语句
cursor.execute(sql,[a,b])
#提交事务
conn.commit()
except Exception as e:
#有异常,回滚事务
conn.rollback()
#关闭光标对象
cursor.close()
#关闭数据库连接
conn.close()
运行一下代码,可以看到控制台打印内容
数据库表中也存好了相应的信息