如何设置For循环以读取URL列表并使用Python Pandas Lib抓取数据

时间:2019-06-07 17:01:06

标签: pandas python-3.7

这是我的第一个Python脚本。我目前正在尝试从位于称为url-list.txt的文件中的多个URL抓取HTML表中嵌入的数据。  我已经成功地能够使用Python的Panda库从单个页面上抓取我需要的数据,但是我遇到了最糟糕的时间,试图做一个简单的for循环以从url-list.txt文件中加载每个url进行抓取其余100个左右网址中的数据。 这是我到目前为止所得到的。您可以看到我对for循环的尝试已被注释掉。任何帮助将不胜感激。

import bs4 as bs
import urllib.request
import pandas as pd

#url_list = "/home/awephuck/url-list.txt"
#for x in urls:

dfs = pd.read_html('http://example.com/dir1/file.html')
for df in dfs:
    print(df)

3 个答案:

答案 0 :(得分:0)

使用HTML的数据废料将存储在“列表”中,而不存储在“数据框”中。
所有数据将存储在列表的第一位置。
使用列表创建数据框并尝试for循环遍历索引

import pandas as pd
data=pd.read_html('https://www.fdic.gov/bank/individual/failed/banklist.html')
type(data)  # Data type of Scrap data
df=data[0]  #convert into dataframe
type(df)    
for i in df.index:    #loop using df.index
    print(df.iloc[i])   

enter image description here enter image description here

答案 1 :(得分:0)

您只需要在文本文件中列出URL的列表,然后在它们周围循环。

即:

with open('file.txt', 'r') as text:
    links = text.read().splitlines()

for url in links:
    #whatever you need to do

这假设每个网址都在其单独的行上。

答案 2 :(得分:0)

讨厌Python,最终获得了它的超强支持,但是它起作用了。

#!/bin/bash

for i in `cat url-list.txt`; do
rm pyget.py

echo "import bs4 as bs" >> pyget.py
echo "import urllib.request" >> pyget.py
echo "import pandas as pd" >> pyget.py
echo  "dfs = pd.read_html($i)" >> pyget.py
echo "for df in dfs:" >> pyget.py
echo "  print(df)" >> pyget.py

python3 pyget.py >> clientdata.txt

done