【问题标题】:how do i crawl the data of different links in a webpage after extracting them as well as add conditions?提取后如何抓取网页中不同链接的数据以及添加条件?
【发布时间】:2021-07-21 09:33:54
【问题描述】:

我有一个项目要求我使用某个网站从 2010 年到现在抓取所有埃及电影,并形成一个 csv 文件,其中包含数据库所需的表(电影、演员、用户评分、家庭评分等)。 ) 使用美丽的汤。问题是所需的数据在我提取的每个电影链接中,但我需要知道的是如何爬取每个链接中的数据。我需要添加的条件是我只想要电影和某些数据,例如上述(电影、演员、用户评分、家庭评分等)。

parser = 'html.parser' 
resp = urllib.request.urlopen("https://elcinema.com/en/index/work/country/eg")
soup = BeautifulSoup(resp, parser, from_encoding=resp.info().get_param('charset'))

for link in soup.find_all('a', href=True):
    print(link['href'])

注意:我知道您关心专业精神,并且我尝试按照说明进行操作。另外,我还在学习,这方面的资料很少。

【问题讨论】:

  • urlopen( link['href'] ) 代替print(link['href']) 怎么样?
  • 您应该将代码放入函数中,然后您可以使用function( link['href'] ) 代替print(link['href'])

标签: python database csv beautifulsoup jupyter-notebook


【解决方案1】:

您应该将代码保留在函数中 - 即。 parse_movie(url), parse_main_page() 然后你可以在 parse_main_page() 中运行 parse_movie(url)link['href']


我可能看起来像这样 - 它需要获取电影详细信息并保存在文件中的代码,但我没有对其进行测试。

import urllib
from bs4 import BeautifulSoup

parser = 'html.parser' 

# --- functions ---

def parse_movie(url):

    resp = urllib.request.urlopen(url)
    soup = BeautifulSoup(resp, parser, from_encoding=resp.info().get_param('charset'))

    movie = []
    
    # ... code to get movie details ...
    # ... (movie, cast, user rating, family rating, etc.) ...

    return movie
    
    
def parse_main_page():

    resp = urllib.request.urlopen("https://elcinema.com/en/index/work/country/eg")
    soup = BeautifulSoup(resp, parser, from_encoding=resp.info().get_param('charset'))

    all_movies = []
    
    for link in soup.find_all('a', href=True):
        movie = parse_movie( "https://elcinema.com" + link['href'] )
        all_movies.append(movie)
        
    return all_movies

# --- main ---

all_movies = parse_main_page()

print(all_movies)

# ... code to write `all_movies` in file ...

现在您应该阅读BeautifulSoup 的文档,因为它有很多功能和选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 2021-11-25
    • 2022-01-05
    相关资源
    最近更新 更多