本代码演示去电影网址上抓取电影网址和电影名称的数据,并保存到本机到excel表格中
操作步骤如下:
一、去百度上搜索查询要爬去的电影网址:
搜索到的电影网址为:
http://dianying..com/list/guzhuang------.html,即我们今天要通过python进行get请求的网址
二、开始测试爬取网址:
1、在极速浏览器输入网址:
http://dianying..com/list/guzhuang------.html。
2、按F12查看网址的源代码。
3、按住F5加载网页源代码。
4、找到左下角的Network,点击↖箭头,选择对应的电影,如下图所示:
相当于已经得出了如下结论:
所有的电影网址,标题信息都在标签里。
三、去pycharm里编写源代码
1、同时按alt+insert键,新建一个使用find_all匹配电影信息.py的文件。
2、根据以下3个步骤开始编写爬取网页源代码的代码:
①导入相应的库
②定义函数对网页进行get请求,并解析网址,并保存数据到excel中
③调用函数
代码示例如下:
#1、导入相应的库
import re,requests,random,os #导入正则,网页请求,随机,系统库
from bs4 import BeautifulSoup #从bs4中导入网页源代码解析库
import pandas as pd #导入pandas库,并设置为pd
#2、定义函数对网页进行get请求
def gethtml():
url="http://dianying..com/list/guzhuang------.html"
agent1 = {"User-Agent": "Mozilla/ (Windows NT ; Win64; x64) AppleWebKit/ (KHTML, like Gecko) Chrome/ Safari/"} # 设定请求头的值agent1
agent2 = {"User-Agent": "Mozilla/ (Windows NT ; WOW64) AppleWebKit/ (KHTML, like Gecko) Chrome/ Safari/"} # 设定请求头的值agent2
agent3 = {"User-Agent": "Mozilla/ (X11; Linux x86_64) AppleWebKit/ (KHTML, like Gecko) Chrome/ Safari/"} # 设定请求头的值agent3
list1 = [agent1, agent2, agent3] # 设置3个请求头组成的列表,并赋值给列表list1
agent = random.choice(list1) # 请求头的值agent从列表list1里随机选择一个
try:
response = requests.get(url, headers=agent) # 伪装浏览器对网站进行get请求,并将请求结果赋值给response
response.encoding = response.apparent_encoding # 根据内容解析出网页的编码格式并赋值给response.encoding
html = response.text # 将网页的源代码赋值给html
soup=BeautifulSoup(html,"html.parser") #使用html.parser解析器对网页源代码进行解析,并将解析结果赋值给soup
info = soup.find_all("em",attrs={"class":"emTit"}) #查找所有的当参数class属性值为emTit时的em标签,并将所有的查找结果赋值给info
#发现所有电影信息都在黄飞鸿1:壮志凌云标签里,
#故对上述标签信息进行正则匹配
print(info)
list1=[] #设置列表list1为空列表,用来接收电影的网址信息
list2=[] #设置列表list2为空列表,用来接收电影的标题信息
for movieinfo in info: #在info里遍历所有的电影信息movieinfo
print(movieinfo) #打印所有的电影信息
list1.append("http:"+movieinfo.a.get("href")) #将遍历出来的a标签的href属性值前加上http作为一个完整的网址添加到列表list1
list2.append(movieinfo.a.string) #将遍历出来的a标签的值添加到列表list2
print("list1:",list1) #打印列表list1
print("list2:",list2) #打印列表list2
dict1={"序号":range(1,len(list1)+1),"网址":list1,"电影标题":list2}
# 上面这行代码设置dict1字典,字典的三个键分别是序号,网址,电影标题,对应的是存储在excel表格里的三个表头,即3个列标名称,字典的三个值分别是序号值,电影网址,电影标题名称
df=pd.DataFrame(dict1) #将dict1的数据保存为表格,并赋值给df变量
df.to_excel("E:\IT\PYthon\电影数据.xlsx") #将df的数据保存到E:\IT\PYthon\电影数据.xlsx的excel文件中,若没有这个文件,则自动新建这个文件并保存数据
except: #假如接收到错误反馈信息时
print("爬取失败") #打印爬取失败的提示
#3、调用爬取数据的函数
if __name__ == '__main__':
gethtml() #调用gethtml函数
在pycharm同时按住ctrl+shift+F10运行代码,代码运行结果如下:
[王朝的女人?杨贵妃, 龙门飞甲, 开封降魔记, 黄飞鸿1:壮志凌云, 神谕通天, 笑傲江湖3:东方不败…, 封魔传, 恶虎村, 少林与武当, 镖行天下前传之决战…, 大唐狐妖传, 轩辕大帝, 白幽灵传奇之绝命逃…, 火烧圆明园, 埋伏(), 绣春刀, 止杀令, 黄飞鸿6:西域雄狮, 龙族的反击, 白夜侠, 倚天屠龙记之魔教教…, 天将雄师, 大罗剑侠, 杨门女将之军令如山…, 奇侠, 等到烟暖雨收, 古墓荒斋, 黑灵官, 铁锅传奇, 花漾, 鹰王, 皇上命我来选妃, 镖行天下前传之终极…, 绣春刀?修罗战场 , 维京:王者之战]
list1: ['http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html', 'http://dianying..com/detail/.html']
list2: ['王朝的女人?杨贵妃', '龙门飞甲', '开封降魔记', '黄飞鸿1:壮志凌云', '神谕通天', '笑傲江湖3:东方不败…', '封魔传', '恶虎村', '少林与武当', '镖行天下前传之决战…', '大唐狐妖传', '轩辕大帝', '白幽灵传奇之绝命逃…', '火烧圆明园', '埋伏()', '绣春刀', '止杀令', '黄飞鸿6:西域雄狮', '龙族的反击', '白夜侠', '倚天屠龙记之魔教教…', '天将雄师', '大罗剑侠', '杨门女将之军令如山…', '奇侠', '等到烟暖雨收', '古墓荒斋', '黑灵官', '铁锅传奇', '花漾', '鹰王', '皇上命我来选妃', '镖行天下前传之终极…', '绣春刀?修罗战场 ', '维京:王者之战']
pycharm代码图片示例如下:
检查网址的电影信息图片
保存到本机的EXCEL表格图片
