思路分析:
<1>打开film tt主页面源代码,爬取2021模块部分,定位,分析代码
<2>利用浏览器抓包工具获取html数据部分的伪装头
<3>通过分析源代码及需求,编写re正则表达式
<4>开始获取
import requests
import re # re正则模块
import csv
# 要爬取的页面url(网址)
movie_god_url = "https://www.dytt8.net/index2.htm"
# 请求头,伪装浏览器,python自带浏览器会被反爬
request_header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36"
}
page_sorce = requests.get(url=movie_god_url, headers=request_header, verify=False) # verify=Flase是为了取消安全警告,不然会什么都爬不到
page_sorce.encoding = "gb2312" # 应对爬取到的数据乱码情况
page_sorce = page_sorce.text # 将数据成为文本形式
# 三个正则表达式匹配,套娃使用
regular_one = re.compile(r'2021新片精品(?P<content>.*?)</table>', re.S)
regular_two = re.compile(r">最新dy下载.*?<a href='(?P<child_url>.*?)'>", re.S)
regular_three = re.compile("最新dy下载.*?href='.*?'>(?P<film_name>.*?)</a>", re.S)
# 圈定部分源代码
cont = regular_one.finditer(page_sorce) # 第一个正则式匹配查找-在爬取到的页面源代码中
for j in cont: # 下面两个正则都是在上面第一个正则匹配的基础上进行的
cont = j.group('content')
li = regular_two.finditer(cont) # 第二个正则匹配查找
name = regular_three.finditer(cont) # 第三个正则匹配查找
pa = open('page_sorce.txt', 'w', encoding='utf-8')
god_csv = csv.writer(pa) # 经验证调试,csv模块可也用于txt文件操作,目前功能优势为换行简洁,智能强大;数据可视化;
# 爬取子页面参数,并将其存储至csv文件中(或者txt也行,因为不做数据分析)
for i in li:
url = i.group('child_url')
god = i.groupdict()
god_csv.writerow(god.values())
# 爬取电影名字,并将其存储至csv文件中(或者txt也行,因为不做数据分析)
for n in name:
film = n.group('film_name')
god = n.groupdict()
god_csv.writerow(god.values())
pa.close()
#爬取子页面网址,拼接参数和父网址,因为出现有空行,拼接错误,下面将空行删除并且将拼接好的网址读入新文件txt
fix = open(file='page_sorce.txt', mode='r+', encoding='utf-8')
newfile = open(file='replace.txt', mode='w', encoding='utf-8')
try:
for j in fix.readlines():
if j == "\n":
j = j.strip("\n")
else:
newfile.write(j)
finally:
fix.close()
newfile.close()
f = 1
newfile = open(file='replace.txt', mode='r+', encoding='utf-8')
for i in newfile.readlines():
i = 'https: // www.dytt8.net' + i
f = f+1
if f == 16:
break
print(i)#打印一下
print('读入完毕')
结语:那么爬取到子页面网址及子页面所指的**名称后
便可以重复上面开始爬取部分,通过子页面网址爬取到子页面中的download地址;同志自行扩展;
因为较为重复,就要不在这里赘述了,小主们觉得好就点个赞吧!