天天看点

python 爬虫(正则)

python 爬虫(正则)

🍖🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖

🍖🍖

🍖🍖🍖

🍖🍖🍖🍖 作者 : 不良使

🍖🍖🍖🍖🍖 潜力创作新星 华为云享专家

🍖🍖🍖🍖🍖🍖 博客记录学习的思路,项目和错误,寻找志同道合的朋友

🍖🍖🍖🍖🍖🍖🍖 如果觉得有帮助记得一键三连 ┗|`O′|┛ 嗷~~

🍖🍖🍖🍖🍖🍖🍖🍖

🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖🍖 🍖🍖🍖🍖🍖🍖🍖

1、 的定位2022必看片

2、 从2022必看片中拿到子页面链接地址

3 、请求子页面地址,拿到我们想要下载的地址

🍓🍓获取页面请求

地址在最后面

import requests
import re

# todo 列表拿来存储子页面,为后面提取每个子页面信息做准备


child_urls=[地址]
url = ""

resp = requests.get(url)  # todo   verify=False  去掉安全认证
resp.encoding = 'gbk'
print(resp.text)      
python 爬虫(正则)

因为我们可以在开发者模式种会发现是get请求,requests.get(url)。因为这个网站的反爬不是很严重,所以不用伪装成用户了。很适合新手练手。

注意:无论是爬取什么网站,获得什么信息都是先获得html,然后解析html提取需要的数据。

💋💋resp.encoding = 'gbk’默认是utf-8,不设置会乱码。

🍓🍓定位2022必看片

python 爬虫(正则)

​​

​代码展示​

import requests
import re

# todo 列表拿来存储子页面,为后面提取每个子页面信息做准备
child_urls=[]
url = "地址"

resp = requests.get(url)  # todo   verify=False  去掉安全认证
resp.encoding = 'gbk'
# print(resp.text)

obj = re.compile(r'2022必看热片.*?<ul>(?P<content>.*?)</ul>', re.S)
obj2 = re.compile(r"<a href='(?P<url>.*?)'",re.S)
obj3=re.compile(r' title="(?P<title>.*?)"',re.S)

# todo 先取出所有的li标签
res = obj.finditer(resp.text)
for i in res:
    ul = i.group("content")
    print(ul)      
python 爬虫(正则)

🍓🍓解析&&提取

import requests
import re

# todo 列表拿来存储子页面,为后面提取每个子页面信息做准备
child_urls=[]
url = "地址"

resp = requests.get(url)  # todo   verify=False  去掉安全认证
resp.encoding = 'gbk'
# print(resp.text)

obj = re.compile(r'2022必看热片.*?<ul>(?P<content>.*?)</ul>', re.S)
obj2 = re.compile(r"<a href='(?P<url>.*?)'",re.S)
obj3=re.compile(r' title="(?P<title>.*?)"',re.S)

# todo 先取出所有的li标签
res = obj.finditer(resp.text)
for i in res:
    ul = i.group("content")
    # print(ul)
    res2 = obj2.finditer(ul)
    # todo 取出后匹配里面需要的url
    # todo 注意,这里的url只是一部分,需要拼接
    for j in res2:
        child_url=url+j.group("url").strip("/")
        child_urls.append(child_url)
        # print(child_url)
        # print(j.group("url"))
    # todo 获取电影标题
    res3=obj3.finditer(ul)
    for k in res3:
        print(k.group("title"))
        pass
print(child_urls)      
python 爬虫(正则)

🍓🍓挖掘

由于上面已经huoqu2022所有值得看电影的url,下面对每个url发起请求获得每个子页面的html,进行解析提取。

# coding=utf-8
# TODO                鸟欲高飞,必先展翅
# TODO                 向前的人 :Jhon


# todo  定位2022必看片
# todo  从2022必看片中拿到子页面链接地址
# todo  请求子页面地址,拿到我们想要下载的地址

import requests
import re

# todo 列表拿来存储子页面,为后面提取每个子页面信息做准备
child_urls=[]
url = "地址"

resp = requests.get(url)  # todo   verify=False  去掉安全认证
resp.encoding = 'gbk'
# print(resp.text)

obj = re.compile(r'2022必看热片.*?<ul>(?P<content>.*?)</ul>', re.S)
obj2 = re.compile(r"<a href='(?P<url>.*?)'",re.S)
obj3=re.compile(r' title="(?P<title>.*?)"',re.S)

# todo 先取出所有的li标签
res = obj.finditer(resp.text)
for i in res:
    ul = i.group("content")
    # print(ul)
    res2 = obj2.finditer(ul)
    # todo 取出后匹配里面需要的url
    # todo 注意,这里的url只是一部分,需要拼接
    for j in res2:
        child_url=url+j.group("url").strip("/")
        child_urls.append(child_url)
        # print(child_url)
        # print(j.group("url"))
    # todo 获取电影标题
    res3=obj3.finditer(ul)
    for k in res3:
        # print(k.group("title"))
        pass
# print(child_urls)
# todo 前面取到了子页面的url,下面开始提取子页面的电影信息
# todo 子页面正则提取
child_1=re.compile(r'◎片  名 (?P<movie>.*?)<br />', re.S)
child_2=re.compile(r'<td style="WORD-WRAP: break-word" bgcolor="#fdfddf"><a href="(?P<download>.*?)"', re.S)
for url in child_urls:
    child_resp=requests.get(url)
    child_resp.encoding='gbk'
    # print(child_resp.text)
    res4=child_1.findall(child_resp.text)
    # print(res4)

    res5=child_2.findall(child_resp.text)
    print(res5)      
python 爬虫(正则)

​​

​流程:发起get请求-->定位-->解析-->获得定位的所有url-->对每个获得的url发起请求-->获得每部电影的html-->解析,提取需要的信息​

​​