这是我的第一个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)
答案 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])
答案 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