【发布时间】:2017-09-21 12:47:34
【问题描述】:
我正在从具有相同 DOM 结构的两个 URL 中进行抓取,因此我试图找到一种同时抓取它们的方法。
唯一需要注意的是,从这两个页面中抓取的数据需要最终出现在明确命名的列表中。
用例子来解释,这是我尝试过的:
import os
import requests
from bs4 import BeautifulSoup as bs
urls = ['https://www.basketball-reference.com/leaders/ws_career.html',
'https://www.basketball-reference.com/leaders/ws_per_48_career.html',]
ws_list = []
ws48_list = []
categories = [ws_list, ws48_list]
for url in urls:
response = requests.get(url, headers=headers)
soup = bs(response.content, 'html.parser')
section = soup.find('table', class_='stats_table')
for a in section.find_all('a'):
player_name = a.text
for cat_list in categories:
cat_list.append(player_name)
print(ws48_list)
print(ws_list)
当我为其页面拍摄 2 个独特的列表时,这最终会打印两个相同的列表。
我该如何做到这一点?以另一种方式编码会更好吗?
【问题讨论】:
-
您正在为两个列表添加相同的项目
player_name。 -
请查看我更新后的评论。我错过了某个部分。
-
@offeltoffel 每次迭代我如何区分这两个页面?
-
我正准备用
enumerate给你一个解决方案,但用户Uvar 更快。enumerate允许您迭代项目并同时计算它们的数量。您通过url处理该项目并将其分配给您的类别索引i
标签: python python-3.x web-scraping beautifulsoup