python 爬虫-----爬取 豆瓣Top250 排行榜电影

step1.

打开网页 并且产看源代码 使用shift+F 搜索原网页中的想查找的内容 发现源代码中存在相关信息 说明该网页是服务器加载的数据 所以我们的任务就是提取源代码并且利用re正则表达式提取数据

 

 

step2.

输入代码,请求获取网页源代码,发现无响应,说明网页采用反扒措施,需要更改用户代理User_Agent

import requests
import  re

url = "https://movie.douban.com/top250"

resp = requests.get(url)
print(resp.text)

step3.

输入headers 更改代理,解决反扒

import requests
import  re

url = "https://movie.douban.com/top250"

header = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.52"
}
resp = requests.get(url, headers=header)
page_content = resp.text

step4.

数据解析,在源代码中搜索希望得到的数据,从前方某一处设置为起始正则表达式匹配地址

 

 

step5.书写代码,并闯将CSV文件,将数据储存到CSV文件中去

import requests
import  re
import csv

url = "https://movie.douban.com/top250"

header = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.52"
}
resp = requests.get(url, headers=header)
page_content = resp.text

#解析数据

obj = re.compile(r'<li>.*?<div class="item">.*?<span class="title">(?P<name>.*?)'
                 r'</span>.*?<p class="">.*?<br>(?P<year>.*?)&nbsp'
                 r'.*?<span class="rating_num" property="v:average">(?P<score>.*?)</span>'
                 r'.*?<span>(?P<number>.*?)</span>', re.S)
result = obj.finditer(page_content)
f = open("datamovie.csv", mode="w")#创建文件并打开
csvwriter = csv.writer(f)#写入文件
for it in result:
#     print(it.group("name"))
#     print(it.group("score"))
#     print(it.group("number"))
#     print(it.group("year").strip())#Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
# #注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
    dic = it.groupdict()#创建字典
    dic['year'] = dic['year'].strip()
    csvwriter.writerow(dic.values())

f.close()#关闭文件
print("over!")
resp.close()#关闭连接

 

posted @ 2022-10-27 21:31  slowlydance2me  阅读(138)  评论(0编辑  收藏  举报