【问题标题】:Extract specific columns from a given webpage从给定网页中提取特定列
【发布时间】:2016-12-14 08:17:57
【问题描述】:

我正在尝试使用 python 读取网页并将数据保存为 csv 格式,以作为 pandas 数据框导入。

我有以下代码从所有页面中提取链接,而不是尝试读取某些列字段。

for i in range(10):
    url='https://pythonexpress.in/workshop/'+str(i).zfill(3)
    import urllib2
    from bs4 import BeautifulSoup
    try:
        page = urllib2.urlopen(url).read()
        soup = BeautifulSoup(page)
        for anchor in soup.find_all('div', {'class':'col-xs-8'})[:9]: 
            print i, anchor.text
    except:
        pass

我可以将这 9 列保存为 pandas 数据框吗?

df.columns=['Organiser', 'Instructors', 'Date', 'Venue', 'Level', 'participants', 'Section', 'Status', 'Description']

【问题讨论】:

  • 你不能只从结果中选择感兴趣的列吗?例如df = df[cols_I want]

标签: pandas beautifulsoup bs4


【解决方案1】:

这会返回前 10 页的正确结果 - 但 100 页需要很长时间。有什么建议可以让它更快吗?

import urllib2
from bs4 import BeautifulSoup

finallist=list()
for i in range(10):
    url='https://pythonexpress.in/workshop/'+str(i).zfill(3)
    try:
        page = urllib2.urlopen(url).read()
        soup = BeautifulSoup(page)
        mylist=list()
        for anchor in soup.find_all('div', {'class':'col-xs-8'})[:9]: 
            mylist.append(anchor.text)
        finallist.append(mylist)
    except:
        pass

import pandas as pd
df=pd.DataFrame(finallist)

df.columns=['Organiser', 'Instructors', 'Date', 'Venue', 'Level', 'participants', 'Section', 'Status', 'Description']

df['Date'] = pd.to_datetime(df['Date'],infer_datetime_format=True)
df['participants'] = df['participants'].astype(int)

【讨论】:

    猜你喜欢
    • 2015-03-15
    • 2022-11-18
    • 1970-01-01
    • 2018-08-14
    • 2021-04-18
    • 1970-01-01
    • 2021-10-27
    • 2020-06-24
    • 2019-11-29
    相关资源
    最近更新 更多