Python:尝试为(类似)数据抓取多个(类似)网站

时间:2017-05-02 19:39:28

标签: python screen-scraping

我有一个代码可以从HPE网站上检索有关交换机的信息。该脚本工作正常,并将信息输出到CSV文件中。但是,现在我需要通过30个不同的开关循环脚本。

我有一个存储在CSV文档中的URL列表。这里有一些例子。

 https://h10145.www1.hpe.com/downloads/SoftwareReleases.aspx?ProductNumber=J4813A
 https://h10145.www1.hpe.com/downloads/SoftwareReleases.aspx?ProductNumber=J4903A
 https://h10145.www1.hpe.com/downloads/SoftwareReleases.aspx?ProductNumber=J9019B
 https://h10145.www1.hpe.com/downloads/SoftwareReleases.aspx?ProductNumber=J9022A

在我的代码中,我绑定了网址'到其中一个链接,它通过代码推送它来检索我需要的信息。

这是我的完整代码:

url = "https://h10145.www1.hpe.com/downloads/SoftwareReleases.aspx?
ProductNumber=J9775A"
r = requests.get(url)
soup = BeautifulSoup(r.content, 'lxml')
table = soup.find('table', attrs={"class": "hpui-standardHrGrid-table"})
headers = [header.text for header in table.find_all('th')]
rows = []

for row in table.find_all('tr', {'releasetype': 'Current_Releases'}):
    item = []
    for val in row.find_all('td'):
        item.append(val.text.encode('utf8').strip())
    rows.append(item)

with open('c:\source\output_file.csv', 'w', newline='') as f:
  writer = csv.writer(f)
  writer.writerow({url})
  writer.writerow(headers)
  writer.writerows(rows)

我正在尝试找到自动执行此操作的最佳方法,因为此脚本需要每周至少运行一次。它需要输出到每次都被覆盖的1个CSV文件。该CSV文件然后链接到我的Excel工作表作为数据源

请耐心等待我的无知。我是Python的新手,我无法在其他地方找到解决方案。

2 个答案:

答案 0 :(得分:0)

你是在linux系统上吗?您可以设置一个cron作业来随时运行脚本。

答案 1 :(得分:0)

就个人而言,我只是创建每个“ProductNumber”唯一查询参数值的数组,并通过循环遍历该数组。

然后,通过调用其他代码,因为它将封装在该循环中,您应该能够完成此任务。