代码练习①——爬取【阿里巴巴】一家公司的信息,并存入数据库
import requests #引用requests库
import re#引用re库
import pymysql#引用PyMySQL库
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}#模拟浏览器访问强求,在谷歌浏览器输入about:version即可获取
#自定义函数,提取并清洗数据
def baidu(company):
url='https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&ie=utf-8&word='+company
res=requests.get(url,headers=headers).text
p_source = '新闻来源:(.*?)"'
source = re.findall(p_source, res, re.S)
p_date = '发布于:(.*?)"'
date = re.findall(p_date, res, re.S)
p_href = '<h3 class="news-title_1YtI1"><a href="(.*?)"'
href = re.findall(p_href, res, re.S)
p_title = '标题:(.*?)"'
title = re.findall(p_title, res, re.S)
for i in range(len(title)):
db = pymysql.connect(host='localhost', port=3306, user='root', password='', database='pachong',charset='utf8') # 通过pymysql.connect函数链接数据库
# 数据库插入数据
cur = db.cursor() # 获取会话指针,用来调用SQL语句
sql = 'INSERT INTO test(company,title,href,date,source)VALUES(%s,%s,%s,%s,%s)' # %s为占位符,代表一个字符串
cur.execute(sql, (company, title[i], href[i], date[i], source[i])) # 指针执行SQL语句
db.commit() # 在该表数据表结构后,更新数据表,固定写法
cur.close() # 关闭会话指针
db.close() # 关闭数据库连接
baidu('阿里巴巴')
运行结果:
代码练习②——爬取5家公司的信息,并存入数据库
import requests #引用requests库
import re#引用re库
import pymysql#引用PyMySQL库
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}#模拟浏览器访问强求,在谷歌浏览器输入about:version即可获取
#自定义函数,提取并清洗数据
def baidu(company):
url='https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&ie=utf-8&word='+company
res=requests.get(url,headers=headers).text
p_source = '新闻来源:(.*?)"'
source = re.findall(p_source, res, re.S)
p_date = '发布于:(.*?)"'
date = re.findall(p_date, res, re.S)
p_href = '<h3 class="news-title_1YtI1"><a href="(.*?)"'
href = re.findall(p_href, res, re.S)
p_title = '标题:(.*?)"'
title = re.findall(p_title, res, re.S)
for i in range(len(title)):
db = pymysql.connect(host='localhost', port=3306, user='root', password='', database='pachong',charset='utf8') # 通过pymysql.connect函数链接数据库
# 数据库插入数据
cur = db.cursor() # 获取会话指针,用来调用SQL语句
sql = 'INSERT INTO test(company,title,href,date,source)VALUES(%s,%s,%s,%s,%s)' # %s为占位符,代表一个字符串
cur.execute(sql, (company, title[i], href[i], date[i], source[i])) # 指针执行SQL语句
db.commit() # 在该表数据表结构后,更新数据表,固定写法
cur.close() # 关闭会话指针
db.close() # 关闭数据库连接
companys = ['阿里巴巴', '万科', '京东', '恒大','百度']#对列表中的关键词依次进行baidu()函数运行
for company in companys:
try:#(由于爬取数据比较多,用try/except函数能防止程序报错中断)
baidu(company)
print(company+'爬取并成功存入数据库')
except:
print(company+'爬取并存入数据库失败')
运行结果: