Соскоб в сети с новичком Python

1

Я просто узнаю о python & web scraping, я пытаюсь очистить секционные времена от attheraces, и я могу получить данные в электронную таблицу, но все это вертикально, и я хочу получить его как горизонтальную таблицу (например, сайт), пока у меня это...

from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup

my_url = "http://www.attheraces.com/ajax/getContent.aspx?ctype=sectionalsracecardresult&raceid=1062194&page=/racecard/Windsor/8-October-2018/1325&dtype=times"

uClient = uReq (my_url)
page_html =uClient.read()
uClient.close()

page_soup=soup(page_html, "html.parser")

containers = page_soup.findAll ("div",{"class":"card-body__td card-body__td--centred card-cell__time card-cell__time--8-sectionals"})

filename = "sectionals.csv"
f= open (filename, "w")

headers = "sectional\n"

f.write(headers)

for container in containers:
    sectional = container.div.div.span.text

    print(sectional)


    f.write(sectional + "," + "\n")

f.close()   
Теги:
web-scraping

1 ответ

0

Если вы перейдете непосредственно к ячейкам, вам придется делать предположения о строках. Начните с строк:

containers = page_soup.findAll("div", {"class":"card-cell card-cell--primary card-cell--primary--no-only"})

# Open a file handle here and use it to create a csv writer (I like to use DictWriter).

for container in containers:
    row = []

    for cell in container.findAll("div", {"class":"card-body__td card-body__td--centred card-cell__time card-cell__time--8-sectionals"}):
        sectional = cell.div.div.span.text
        row.append(sectional)

    # Write a row to your csv writer here.
    print(row)

Посмотрите на использование модуля csv Python, чтобы избежать общих проблем. Кроме того, синтаксис with синтаксисом - отличный способ убедиться в правильности управления ресурсами; csv поддерживает это, как и файлы (with open('...', 'r') as:, и они могут использоваться вместе.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню