【问题标题】:Web scraping with python newbie使用 python 新手进行网页抓取
【发布时间】:2018-10-10 19:38:09
【问题描述】:

我只是在学习 python 和网络抓取,我正在尝试从 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()   

【问题讨论】:

    标签: python web-scraping


    【解决方案1】:

    如果您直接转到单元格,则必须对行做出假设。从行开始:

    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)
    

    考虑使用 Python 的 csv 模块以避免常见问题。此外,with 语法是确保资源管理正确的好方法; csv supports this、文件 (with open('...', 'r') as:) 和这些 can be used together

    【讨论】:

      猜你喜欢
      • 2011-10-21
      • 1970-01-01
      • 2020-10-04
      • 2021-05-08
      • 2018-07-20
      • 2021-01-13
      • 2020-03-13
      • 2016-02-10
      相关资源
      最近更新 更多