抓取同一 header/class 下的多个锚标签
Scraping multiple anchor tags which are under the same header/class
我正在尝试从 IMDB 中抓取热门剧集数据并提取节目名称和剧集名称。但是我遇到了一个问题,即节目名称和剧集名称都是位于同一 header 下的锚标签。 Screenshot of element
代码如下:
url = "https://www.imdb.com/search/title/?title_type=tv_episode&num_votes=1000,&sort=user_rating,desc&ref_=adv_prv"
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
series_name = []
episode_name = []
episode_data = soup.findAll('div', attrs={'class': 'lister-item mode-advanced'})
for store in episode_data:
sName = store.h3.a.text
series_name.append(sName)
# eName = store.h3.a.text
# episode_name.append(eName)
有人知道如何解决这个问题吗?
在最后一部分你应该指定更多
for store in episode_data:
h3=store.find('h3', attrs={'class': 'lister-item-header'})
sName =h3.findAll('a')[0].text
series_name.append(sName)
eName = h3.findAll('a')[1].text
episode_name.append(eName)
注意'attack of titan'的名字已经改成日文了!!和浏览器显示的html不一样,不知道为什么! ?!
您可以使用 find_all
然后通过它在列表中的索引调用它。或者您可以找到第一个锚标记,然后使用 find_next
Farhang 先于我找到 find_all() 解决方案。所以这里是 find_next
for store in episode_data:
h3=store.find('h3', attrs={'class': 'lister-item-header'})
sName =h3.find('a')[0].text
series_name.append(sName)
eName = h3.find('a').find_next('a').text
episode_name.append(eName)
我正在尝试从 IMDB 中抓取热门剧集数据并提取节目名称和剧集名称。但是我遇到了一个问题,即节目名称和剧集名称都是位于同一 header 下的锚标签。 Screenshot of element
代码如下:
url = "https://www.imdb.com/search/title/?title_type=tv_episode&num_votes=1000,&sort=user_rating,desc&ref_=adv_prv"
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
series_name = []
episode_name = []
episode_data = soup.findAll('div', attrs={'class': 'lister-item mode-advanced'})
for store in episode_data:
sName = store.h3.a.text
series_name.append(sName)
# eName = store.h3.a.text
# episode_name.append(eName)
有人知道如何解决这个问题吗?
在最后一部分你应该指定更多
for store in episode_data:
h3=store.find('h3', attrs={'class': 'lister-item-header'})
sName =h3.findAll('a')[0].text
series_name.append(sName)
eName = h3.findAll('a')[1].text
episode_name.append(eName)
注意'attack of titan'的名字已经改成日文了!!和浏览器显示的html不一样,不知道为什么! ?!
您可以使用 find_all
然后通过它在列表中的索引调用它。或者您可以找到第一个锚标记,然后使用 find_next
Farhang 先于我找到 find_all() 解决方案。所以这里是 find_next
for store in episode_data:
h3=store.find('h3', attrs={'class': 'lister-item-header'})
sName =h3.find('a')[0].text
series_name.append(sName)
eName = h3.find('a').find_next('a').text
episode_name.append(eName)