python爬取电影天堂首页

用python写了个小爬虫,用来爬取电影天堂首页放置的几十部电影的名称,上映日期和下载链接,用到了beautifulsoup库和lxml库用来解析

代码如下:

import requests
import re
from lxml import etree
from bs4 import BeautifulSoup
from pandas import DataFrame

class dytt:
	def __init__(self, url, header):
		#定义url和header
		self.url = url
		self.header = header
		#定义第二个页面url的列表
		self.url2 = []
		#定义电影名称列表、上映日期和下载链接列表
		self.name = []   
		self.date = []        
		self.download = []

	#获取电影名字的页面源码
	def context1(self):
		res = requests.get(self.url, headers=self.header)
		res.encoding = 'gb2312'
		return res.text

	#获取日期和下载链接的页面源码
	def context2(self, url):
		res = requests.get("https://www.dytt8.net/"+url, headers=self.header)
		res.encoding = 'gb2312'
		return res.text

	def nameMain(self):
		bs = BeautifulSoup(self.context1(), 'html.parser')
		serach = bs.find("div", attrs={"class":"bd3"})
		serach = serach.find_all("div", attrs={"class":"bd3r"})[0].div.div.select('div[class="co_area2"]')
		for tag in serach:
			finds = tag.find_all("div", class_="co_content8")
			if len(finds) > 0:
				finds = finds[0].ul.table.select("tr")
				for f in finds:
					try:
						moviename = f.td.select('a')[1].get_text()
						moviename = moviename.split("《")[1].split("》")[0]
						self.name.append(moviename)
						#获取第二个页面的url, 并添加到url列表中
						href = f.td.select('a')[1].get('href')
						self.url2.append(href)
					except Exception as e:
						continue

	#获取电影上映日期和下载链接
	def download_date(self):
		i = 1
		for url in self.url2:
			et = etree.HTML(self.context2(url))
			#获取日期
			dt = et.xpath('//div[@class="bd3l"]/div[@class="co_area2"]/div[@class="co_content8"]/ul')
			dt = dt[0].xpath('.//div[@id="Zoom"]')
			dt = dt[0].xpath('.//text()')
			dt = "".join(dt).split("上映日期")[1].split("◎")[0].strip()
			self.date.append(dt)
			#获取下载链接
			dl = et.xpath('//div[@class="bd3l"]/div[@class="co_area2"]/div[@class="co_content8"]/ul')
			dl = dl[0].xpath('.//div[@id="Zoom"]')
			dl = dl[0].xpath('.//table')
			dl = dl[0].xpath('.//tr/td/a/text()')
			self.download.append(dl[0])
			print("爬取成功"+str(i))
			i += 1

	#保存到excel
	def save_excel(self):
		print("正在保存为excel文件...")
		df = DataFrame([self.name, self.date, self.download]).T
		df.columns = ["电影名称", "上映日期", "下载链接"]
		df.to_excel("movie.xlsx", encoding='utf-8_sig')
		print("保存成功!")

if __name__ == '__main__':
	url = "https://www.dytt8.net/"
	header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"}
	dy = dytt(url, header)
	dy.nameMain()
	dy.download_date()
	dy.save_excel()

运行效果如下:
在这里插入图片描述
在这里插入图片描述

Python爬取电影天堂这类网站通常涉及到网络爬虫技术,特别是使用如requests、BeautifulSoup、Scrapy等库来获取网页内容。以下是一个简单的步骤概述: 1. **导入库**:首先安装必要的库,如`requests`用于发送HTTP请求,`beautifulsoup4`用于解析HTML。 ```python import requests from bs4 import BeautifulSoup ``` 2. **发送请求**:向电影天堂的URL发起GET请求,并保存响应内容。 ```python url = "http://www.example.com/movieheaven" # 替换为你想爬取电影天堂页面地址 response = requests.get(url) ``` 3. **解析内容**:使用BeautifulSoup解析HTML文档,找到包含电影信息的部分。 ```python soup = BeautifulSoup(response.text, 'html.parser') movies = soup.find_all('div', class_='movie') # 类名可能需要根据实际网站结构修改 ``` 4. **提取数据**:遍历解析后的节点,提取每部电影的标题、链接或其他相关信息。 ```python for movie in movies: title = movie.find('h2').text link = movie.find('a')['href'] print(f'Title: {title}, Link: {link}') ``` 5. **存储数据**:可以根据需求将数据存入CSV、数据库或JSON文件。 6. **处理反爬机制**:注意检查目标网站是否有robots.txt文件,遵守网站的爬取政策,设置合理的延迟以避免过于频繁的访问。 这只是一个基础示例,实际爬取可能需要处理JavaScript渲染的内容、登录验证、动态加载等复杂情况。同时,要注意尊重版权和法律法规,合理使用爬虫。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值