繁体   English   中英

Python-使用pandas和枚举进行网络爬网

[英]Python - Using pandas and enumerate for web crawling

因此,我最近在网上找到了此代码段,该代码段位于python中,并在pandas中使用了枚举表达式。

import pandas as pd
url = 'http://myurl.com/mypage/'

for i, df in enumerate(pd.read_html(url)):
    df.to_csv('myfile_%s.csv' % i)

有没有办法重写它,以便它可以浏览网页列表而不是单个URL,并将每个页面的表中的所有信息放入单个.csv文件中? 我的主要猜测就像是for循环。

url_base = 'http://myurl.com/mypage/'
count = 1
for i in range(1,5):

    url = '%s%s' %(url_base,count)

    for i, df in enumerate(pd.read_html(url)):
        df.to_csv('myfile_%s.csv' % i)
    count = count + 1  

如果所有csv都具有相同的列,则可以执行此操作

pd.concat([pd.read_html(url) for url in urls], ignore_index=True)

如果您的网址与示例中的网址相同,则可以

url_base = 'http://myurl.com/mypage/{}'
df = pd.concat([pd.read_html(base.format(i)) for i in range(num)], ignore_index=True)
df.to_csv('alldata.csv')

这个怎么样?

import pandas as pd
from concurrent import futures

urls = [your list of urls]

def read_html(url):
    return pd.read_html(url)

with futures.ThreadPoolExecutor(max_workers=6) as executor:
    fetched_urls = dict((executor.submit(read_html, url), url)
                         for url in urls)

nums = range(1, len(fetched_url)+1)

for future, num in zip(futures.as_completed(fetched_urls), nums):
    if future.result():
        future.result().to_csv('myfile_{}.csv'.format(num), index=False)
    elif future.exception():
        print '{} yielded no results'.format(fetched_urls[future])
    else:
        pass

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM