python爬虫-获得子页面网页

思路分析:

<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地址;同志自行扩展;

因为较为重复,就要不在这里赘述了,小主们觉得好就点个赞吧!

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王观天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值