Я работаю над своим первым реальным проектом.Я пытаюсь собрать все новости игрока nfl из новостной ленты rotoworld :
Мне удалось получить всю информацию, которую я хочу, с первой страницы, используя bs4 из BeautifulSoup, но я ищув том, как получить доступ к информации из «старых» вкладок.Я думаю, что было бы легко сделать это, если бы URL менялся каждый раз, когда открывалась новая страница, но это не так.Мне было интересно, если у кого-нибудь есть какие-либо советы по очистке "следующих страниц" с BS, или я должен попробовать такую программу, как Scrappy?
Я использую Python 3. Вот мой код для тех, кто заинтересован.
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
my_url="http://www.rotoworld.com/playernews/nfl/football/"
# opening up connection, grabing the page
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
#html parsing
page_soup = soup(page_html, "html.parser")
#grabs each news report
containers = page_soup.findAll("div",{"class":"pb"})
filename = "nfl_player_news.csv"
f = open(filename, "w")
headers = "Player, Position, Team, Report, More Info, date\n"
f.write("")
for container in containers:
ugly_player_info = container.div.div.text.strip("\r\n")
neat_player_info = " ".join(ugly_player_info.split())
player = container.div.div.a.text
position = " ".join(neat_player_info.split()[3:4])
team = " ".join(neat_player_info.split()[5:])
report = container.p.text.strip()
more_info = container.findAll("div",{"class":"impact"})
info = more_info[0].text.strip()
date_messy = container.findAll("div",{"class":"date"})
date_time = date_messy[0].text.strip()
ny_date= " ".join(date_time.split()[0:2])
date = ny_date + " 2018"
print("player" + player)
print("position" + position)
print("team" + team)
print("report" + report)
print("info" + info)
print("date" + date)
f.write(player + "," + position + "," + team + "," + report.replace(",", "|") + "," + info.replace(",","|") + "," + date + "\n")
f.close()