电影天堂是一个知名的电影下载网站,今天我们的任务是爬取该网站迅雷电影资源下的电影名和磁力链接。
首先导入requests、re和pandas等库,用于发送网络请求、进行正则表达式匹配和数据处理等操作。然后定义一个包含用户代理信息的字典ua,用于发送网络请求。接着使用requests库发送一个get请求,获取“阳光电影”网站的html文本,并设置编码为'gb2312',防止乱码。
import requests
import re
import pandas as pd
ua = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'}
ygdy = 'https://m.ygdy8.com/index.html'
get_web = requests.get(url = ygdy,headers =ua,verify=False)
get_web.encoding = 'gb2312'
利用正则表达式匹配迅雷电影内的信息。
re1 = re.compile(r'迅雷电影资源.*?<ul>(?P<text>.*?)</ul>',re.S)
re2 =re.compile(r"迅雷电影资源.*?<a href='(?P<link>.*?)'")
get_re1 = re1.finditer(get_web.text)
将迅雷电影的信息进行遍历,用正则表达式找出需要的内容,要注意的是这里获取的链接并不是电影的磁力链接,而是进入电影详情页的链接,进入详情页后我们才能获取需要的磁力链接。
for i in all_urls:
get_web1 = requests.get(url=i, headers=ua, verify=False)
get_web1.encoding = 'gb2312'
#爬片名和电影链接
re3 = re.compile(r'◎译 名(?P<tit>.*?)<br />.*?'
r'<a target="_blank" href="(?P<mlink>.*?)">',
re.S)
get_re2 = re3.finditer(get_web1.text)
for x in get_re2:
dic = x.groupdict()
down_link = 'D:/PYTHONSTUDY/pythonProject7/爬虫/re模块/阳光电影.csv'
download = pd.DataFrame(dic,index=[0])
download.to_csv(down_link,mode='a',header=0,index=False,encoding='ANSI')
最后我们还要把信息储存到excel方便使用。 完整代码:
# -*- codeing = utf-8 -*-
# -*- codeing = utf-8 -*-
import requests
import re
import pandas as pd
ua = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'}
ygdy = 'https://m.ygdy8.com/index.html'
get_web = requests.get(url = ygdy,headers =ua,verify=False)
get_web.encoding = 'gb2312'
re1 = re.compile(r'迅雷电影资源.*?<ul>(?P<text>.*?)</ul>',re.S)
re2 =re.compile(r"迅雷电影资源.*?<a href='(?P<link>.*?)'")
get_re1 = re1.finditer(get_web.text)
all_urls = []
for i in get_re1:
ul = i.group("text")
get_re2 =re2.finditer(ul)
for x in get_re2:
ul1 = x.group("link")
all_url = 'https://m.ygdy8.com' + ul1
all_urls.append(all_url)
for i in all_urls:
get_web1 = requests.get(url=i, headers=ua, verify=False)
get_web1.encoding = 'gb2312'
#爬片名和电影链接
re3 = re.compile(r'◎译 名(?P<tit>.*?)<br />.*?'
r'<a target="_blank" href="(?P<mlink>.*?)">',
re.S)
get_re2 = re3.finditer(get_web1.text)
for x in get_re2:
dic = x.groupdict()
down_link = 'D:/PYTHONSTUDY/pythonProject7/爬虫/re模块/阳光电影.csv'
download = pd.DataFrame(dic,index=[0])
download.to_csv(down_link,mode='a',header=0,index=False,encoding='ANSI')