Инкремент по переменной URL - PullRequest
0 голосов
/ 13 декабря 2018
import urllib2

import pandas as pd
from bs4 import BeautifulSoup

x = 0
i = 1
data = []
while (i < 13):
    soup = BeautifulSoup(urllib2.urlopen(
        'http://games.espn.com/ffl/tools/projections?&slotCategoryId=4&scoringPeriodId=%d&seasonId=2018&startIndex=' % i, +str(x)).read(), 'html')
    tableStats = soup.find("table", ("class", "playerTableTable tableBody"))
    for row in tableStats.findAll('tr')[2:]:
        col = row.findAll('td')
        try:
            name = col[0].a.string.strip()
            opp = col[1].a.string.strip()
            rec = col[10].string.strip()
            yds = col[11].string.strip()
            dt = col[12].string.strip()
            pts = col[13].string.strip()
            data.append([name, opp, rec, yds, dt, pts])
        except Exception as e:
            pass
    df = pd.DataFrame(data=data, columns=[
                      'PLAYER', 'OPP', 'REC', 'YDS', 'TD', 'PTS'])
    df
    i += 1

Я работаю с программой фэнтези-футбола и пытаюсь увеличивать данные за все недели, чтобы я мог создавать кадры данных для 40 лучших игроков за каждую неделю.

Я смогчтобы получить его на любую неделю по своему выбору, вручную введя номер недели в части PeriodId URL-адреса, но я пытаюсь программно увеличивать его в течение каждой недели, чтобы упростить его.Я пытался использовать PeriodId='+ I +' и PeriodId=%d, но продолжаю получать различные ошибки о str и int concatenate и плохих операндах.Есть предложения или советы?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

, если у вас возникли проблемы с конкатенацией или форматированием URL-адреса, создайте переменную, вместо этого запишите ее в одну строку с BeautifulSoup и urllib2.urlopen.

Используйте круглые скобки для форматирования с несколькими значениями, например "before %s is %s" % (1, 0)

url = 'http://games.espn.com/ffl/tools/projections?&slotCategoryId=4&scoringPeriodId=%s&seasonId=2018&startIndex=%s' % (i, x)
# or
#url = 'http://games.espn.com/ffl/tools/projections?&slotCategoryId=4&scoringPeriodId=%s&seasonId=2018&startIndex=0' % i
html = urllib2.urlopen(url).read()
soup = BeautifulSoup(html, 'html.parser')

Создание сортировщика кода не повлияет на производительность.

0 голосов
/ 13 декабря 2018

Попробуйте удалить запятую между %i и str(x), чтобы объединить строки и посмотреть, поможет ли это.

soup = BeautifulSoup(urllib2.urlopen('http://games.espn.com/ffl/tools/projections?&slotCategoryId=4&scoringPeriodId=%d&seasonId=2018&startIndex='%i, +str(x)).read(), 'html')

должно быть:

soup = BeautifulSoup(urllib2.urlopen('http://games.espn.com/ffl/tools/projections?&slotCategoryId=4&scoringPeriodId=%d&seasonId=2018&startIndex='%i +str(x)).read(), 'html')

...