我创建了以下代码:
import requests
import pandas as pd
from bs4 import BeautifulSoup
records = []
for factoryId in range(3995, 4000):
url = "http://www.modon.gov.sa/ar/IndustrialCities/Pages/factory.aspx?
factoryId=" + str(factoryId)
r = requests.get(url)
content = r.text
soup = BeautifulSoup(content, "html.parser")
results = soup.find('table', attrs={'class': 'ModonInfoTable'})
for tr in results.find_all('tr'):
tds = tr.find_all('td')[1].text
records.append(tds)
print(records)
factoryId 3995,3996的所需输出:
value1, value2, value3, value4, value5, value6
value1, value2, value3, value4, value5, value6
我的问题是尝试遍历表格,从第2列(左栏)收集逗号分隔值,然后添加换行符,然后在下一页中抓取下一条记录。
目前,我将所有值附加到列表中,但不能用换行符分隔。
我尝试使用numpy,并使用'\n'.join(records)
- 两者都无法获得所需的结果。
最终我将使用pandas将所有值导出为CSV - 这可以轻松完成。
现在唯一的问题是循环记录并正确存储数据。
答案 0 :(得分:0)
我认为records
应该是一个嵌套列表,每个子列表都包含表格单元格,因此当您编写csv文件时,每个html表格的结果都会出现在新行上。
records = []
for factoryId in range(3995, 4000):
url = "http://www.modon.gov.sa/ar/IndustrialCities/Pages/factory.aspx?factoryId=" + str(factoryId)
soup = BeautifulSoup(requests.get(url).text, "html.parser")
results = soup.find('table', attrs={'class': 'ModonInfoTable'})
records.append([tr.find_all('td')[1].text for tr in results.find_all('tr')])
print(records)