爬取电影天堂的电影信息

今天做了一早上的爬虫,爬去电影天堂的电影链接。使用了正则表达式。总的来说来不错。上代码。已经实现的功能:

1.抓取电影发布的日期
2.电影的名字
3.电影的年代
4.电影的产地
5.电影的类别
6:电影的字幕

目前还在考虑,需不需要这么多的字段。
也还遇到一些问题,比如 想抓取豆瓣评分。但是电影天堂的网页布局,有些不一样。很明显是两个人写的。。 尴尬!!

想要达到的预期目标,抓取电影名字,类别,海报,下载地址。
这些都基本上都完成了。
上一段代码:

from urllib.request import urlopen
from urllib.error import HTTPError
from bs4 import BeautifulSoup
from time import sleep
import re
moviesLinks = set()        #全局变量,来储存主网页的链接

def getLinks(pageUrl):
    global moviesLinks     
    html = urlopen(pageUrl)
    bs4 = BeautifulSoup(html,"xml")
    #print(bs4.prettify())

    for link in bs4.findAll("a",{"href":re.compile("/html/gndy/+[a-z]+/[0-9]+/[0-9]+\.html")}):  #正则表达式选取电影链接(过滤掉游戏下载链接,动漫链接,综艺链接)
        if link.attrs['href'] not in moviesLinks:
            newLink = link.attrs['href']
            print(newLink)
            moviesLinks.add(newLink)
            getPageImformation(newLink)


def getPageImformation(pageUrl):
    url = 'http://www.dytt8.net/'+pageUrl
    html = urlopen(url)
    bs4 = BeautifulSoup(html,"xml")
    try:
        date = bs4.find("div",{"class":"co_content8"}).ul.get_text().strip()  #此时date还含有其他的东西
        date = date.split('\n')[0]  #这里就已经处理好了
    except AttributeError:
        print("一部分网页不是电影介绍的网页而已,不用担心")
    try:
        poster  =  bs4.find("div",{"id":"Zoom"}).img.attrs['src']
        print(poster)
    except AttributeError:
        print('一部分网页没有海报而已,不用担心')
    #这部分要进行 一些消息处理了(这网站写的   six  six)
    try:
        name = bs4.find("div",{"id":"Zoom"}).p.get_text().split('◎')[1][4:].strip()  #名字的处理
    except Exception:
        print("一部分网页不是电影介绍的网页而已,不用担心")
    try:
        time = bs4.find("div",{"id":"Zoom"}).p.get_text().split('◎')[3][4:].strip()

    except  Exception:
        print("一部分网页不是电影介绍的网页而已,不用担心")
    try:
        origin = bs4.find("div",{"id":"Zoom"}).p.get_text().split('◎')[4][4:].strip()
        print(origin)
    except Exception:
        print("一部分网页这个属性而已,不用担心")
    try:
        category = bs4.find("div",{"id":"Zoom"}).p.get_text().split('◎')[5][4:].strip()
        print(category)
    except Exception:
        print("一部分网页这个属性而已,不用担心")
    print("--------------------------------\n")
    try:
        downloadLink = bs4.find("td",{"bgcolor":"#fdfddf"}).a.get_text()
        print(downloadLink)
    except Exception:
        print("一些页面不是影片介绍的页面而已,不用担心")

getLinks('http://www.dytt8.net/')


#  3是年代
#  4是产地
#  5是类别
#  6是语言
#  7是字幕
#  8IMDb评分
# 
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渲染的内容、登录验证、动态加载等复杂情况。同时,要注意尊重版权和法律法规,合理使用爬虫
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值