一、获取网页源代码
1.引入所需库
import requests
import re
import pymysql
import time
2.请求头
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}
3.需要挖取新闻数据的机场
companys = ['广州白云机场', '深圳宝安机场','惠州平潭机场', '佛山沙堤机场', '珠海金湾机场', '香港国际机场', '澳门国际机场']
4.建立挖取某机场新闻的函数,获得该网页的源代码
def baidu(i,company):
num = (i-1)*10
url = 'https://www.baidu.com/s?tn=news&rtt=4&bsst=1&cl=2&wd=' + company + '&medium=0&x_bfe_rqs=03E80&tngroupname=organic_news&newVideo=12&rsv_dl=news_b_pn&pn=' + str(num)
res = requests.get(url, headers=headers).text
二、提取信息并清洗数据
1.提取源代码中所需的网址、标题、新闻来源和发布日期的正则表达式
p_href = '
2.清洗标题及发布日期中的干扰信息
for i in range(len(href)):
title[i] = title[i].strip()
title[i] = re.sub('<.*?>', '', title[i])
date[i] = date[i].split(' ')[0]
date[i] = re.sub('年', '-', date[i])
date[i] = re.sub('月', '-', date[i])
date[i] = re.sub('日', '', date[i])
if ('小时' in date[i]) or ('分钟' in date[i]):
date[i] = time.strftime("%Y-%m-%d")
else:
date[i] = date[i]
三、将数据存入MySQL数据库
for i in range(len(title)):
db = pymysql.connect(host='localhost', port=3306, user='root', password='', database='pachong', charset='utf8')
cur = db.cursor()
sql = 'INSERT INTO test(company,title,href,source,date) VALUES (%s,%s,%s,%s,%s)'
cur.execute(sql, (company, title[i], href[i], source[i], date[i]))
db.commit()
cur.close()
db.close()
四、批量爬取7个机场每个机场5页共35页百度网的数据并存入MySQL数据库
for company in companys:
for i in range(5):
baidu(i, company)
print(company + '第' + str(i+1) + "页爬取成功")
最终的结果
附上所有代码
# =============================================================================
# 粤港澳大湾区7个机场,每个机场5页百度新闻数据的爬取,并存入MySQL数据库中
# =============================================================================
# 一、获取网页源代码
# 1.引入所需库
import requests
import re
import pymysql
import time
# 2.请求头
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}
# 3.需要挖取新闻数据的机场
companys = ['广州白云机场', '深圳宝安机场','惠州平潭机场', '佛山沙堤机场', '珠海金湾机场', '香港国际机场', '澳门国际机场']
# 4.建立挖取某机场新闻的函数,获得该网页的源代码
def baidu(i,company):
num = (i-1)*10
url = 'https://www.baidu.com/s?tn=news&rtt=4&bsst=1&cl=2&wd=' + company + '&medium=0&x_bfe_rqs=03E80&tngroupname=organic_news&newVideo=12&rsv_dl=news_b_pn&pn=' + str(num)
res = requests.get(url, headers=headers).text
# 二、提取信息并清洗数据
# 1.提取源代码中所需的网址、标题、新闻来源和发布日期的正则表达式
p_href = '