电影天堂爬取实例—requests
#导入模块
import requests,time,random,re
from useragents import ua_list
#一级页面正则
#<table width="100%".*?<td height="26">.*?<a href="(.*?)".*?class="ulink">(.*?)</a>
#二级页面正则
#<table style=".*?<td style=".*?<a href=".*?">(.*?)</a>
class Movie_heaven(object):
def __init__(self):
self.url = 'https://www.dytt8.net/html/gndy/dyzz/list_23_{}.html'
self.headers = random.choice(ua_list)
#获取响应内容
def get_page(self,url):
headers = self.headers
res = requests.get(url=url,headers={'user-Agent':headers})
res.encoding = 'gbk'
html = res.text
return html
#解析数据
def parse_page(self,html):
#电影名称和详情链接
#这里利用正则匹配,也可以利用xpath或者其他方法
pattern = re.compile('<table width="100%".*?<td height="26">.*?<a href="(.*?)".*?class="ulink">(.*?)</a>',re.S)
one_list = pattern.findall(html)
for i in one_list:
film_name = i[1]
film_link = 'https://www.dytt8.net'+i[0]
#获取详情连接后直接调用二级链接的函数
download_link = self.get_download(film_link)
d = {
"电影名称":film_name,
"详情链接":film_link,
"下载链接":download_link
}
#打印测试
#也可以保存到数据库或者本地文件
print(d)
#二级页面信息
def get_download(self,film_link):
two_html = self.get_page(film_link)
pattern = re.compile('<table style=".*?<td style=".*?<a href=".*?">(.*?)</a>',re.S)
download_link = pattern.findall(two_html)
return download_link
def main(self):
for i in range(1,3):
url = self.url.format(i)
html = self.get_page(url)
self.parse_page(html)
if __name__=='__main__':
n1 = Movie_heaven()
n1.main()
下篇文章介绍常见的反扒机制以及常见的爬虫框架欢迎大家留言评论哦