我有这个代码,从一个URL获取数据:
import requests
from bs4 import BeautifulSoup
import pandas as pd
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'}
url = 'https://liquipedia.net/counterstrike/S1mple'
soup = BeautifulSoup(requests.get(url, headers=headers).text, 'html.parser')
list = ['M0NESY','S1mple']
listdf = pd.DataFrame(list)
listdf.index = listdf.index + 1
print(listdf)
stammdaten = dict( (e.text, e.find_next_sibling('div').text) for e in soup.select('.infobox-description'))
stammdaten['nickname'] = url.split('/')[-1]
#creating a dataframe
index = [1]
stammdatendf = pd.DataFrame(stammdaten, columns = ['nickname', 'Role:','Born:'], index=index)
print(stammdatendf)
#exporting data into Excel
stammdatendf.to_excel('test.xlsx')
它适用于代码中预定义的静态URL,但是我希望代码循环list
中的项目,基于此动态更改URL,并在我的 Dataframe 中输出nickname
、Role:
和Born:
的结果。
不幸的是,我有点不知道如何实现它。我知道我应该创建一个循环命令,但我尝试这样做失败了。
在此编辑:
基本上我想达到的目标是这样的:
import requests
from bs4 import BeautifulSoup
import pandas as pd
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'}
urls = ['https://liquipedia.net/counterstrike/S1mple', 'https://liquipedia.net/counterstrike/M0NESY', 'https://liquipedia.net/counterstrike/Dexter']
players = []
for url in urls:
soup = BeautifulSoup(requests.get(url, headers=headers).text, 'html.parser')
stammdaten = dict( (e.text, e.find_next_sibling('div').text) for e in soup.select('.infobox-description'))
stammdaten['nickname'] = url.split('/')[-1]
players.append(stammdaten)
#print(players)
#creating a player DataFrame
playerdf = pd.DataFrame(players, columns =['nickname','Born:','Role:'])
print(playerdf)
但是,我不想使用urls
数组,而是使用一个包含所有玩家名称的现有数组。
2条答案
按热度按时间zzlelutf1#
我相信你已经了解了漂亮的汤的基本用法,但是你对如何创建爬虫缺乏结构化的直觉。假设你知道函数、if语句和循环是如何工作的,我已经编写了一些经过修改后应该可以工作的伪代码。查找显示
TODO
的部分并编辑它们。程序从
if __name__ == "__main__":
开始它调用
crawl()
来抓取网址。shstlldc2#
我想你是想弄清楚如何浏览liquidpedia使用美丽的汤刮球员的个人资料。
在这个响应中,我将为
M0NESY
的配置文件页面https://liquipedia.net/counterstrike/M0NESY
创建一个scrape配置文件检查页面结构
我的第一步是检查所提供的静态文档的结构。
然后点击inspect。2开发者工具应该打开了。3你检查并理解HTML页面的结构和它的设计来构建定制的scraper。
看来这个开发商并没有让我们太容易。
通常,它们会包含一个
id
或class
标记,以便于查找。它们甚至不使用
table
元素,只是每一行都有一个类似这样的重复结构。创建策略以提取特定项目
我的方法是:
divs
Name:
的divName:
,从包含Илья Осипов
的父元素中获取第二个子元素它看起来像这样:
输出的质量会有很小的变化。
例如:
Name:
上运行它,它将得到Олександр Олегович Костилєв
Nationality
上运行它,它将得到类似"<span class="flag"><a href="/counterstrike/Category:Ukraine" title="Ukraine"><img alt="Ukraine" decoding="async" height="24" loading="lazy" src="/commons/images/b/bb/Ua_hd.png" width="36"/></a></span>"
的结果后者需要一些改进,以使其可读/文本可读。
对于特定的字段,我创建特定的函数来清除它们。
创建在配置文件上循环的脚本
为每个配置文件创建一个数据框,然后将其添加到一个更大的数据框中。一旦你运行完所有的播放器,它将保存到一个
csv
文件中,在excel中打开应该很好。