如何使用Python浏览包含内容分页的HTMl页面?
我想从以下网站抓取所有表格条目(描述序列号、文档号等的表格),并将其写入excel。到目前为止,我只能从第一页(10个条目)抓取数据。谁能帮我用python代码从这个网站的第一页到最后一页抓取数据 网站: 我的python代码:如何使用Python浏览包含内容分页的HTMl页面?,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,我想从以下网站抓取所有表格条目(描述序列号、文档号等的表格),并将其写入excel。到目前为止,我只能从第一页(10个条目)抓取数据。谁能帮我用python代码从这个网站的第一页到最后一页抓取数据 网站: 我的python代码: from bs4 import BeautifulSoup import requests import sys import mechanize import pprint import re import csv import urllib import urlli
from bs4 import BeautifulSoup
import requests
import sys
import mechanize
import pprint
import re
import csv
import urllib
import urllib2
browser = mechanize.Browser()
browser.set_handle_robots(False)
url = 'https://www.gebiz.gov.sg/scripts/main.do?sourceLocation=openarea&select=tenderId'
response = browser.open(url)
html_doc = response.read()
rows_list = []
table_dict = {}
soup = BeautifulSoup(html_doc)
table = soup.find("table", attrs={"width": "100%", "border": "0", "cellspacing": "2", "cellpadding": "3", "bgcolor": "#FFFFFF"})
tr_elements = table.find_all("tr", class_=re.compile((ur'(row_even|row_odd|header_subone)')))
table_rows = []
for i in range(0, len(tr_elements)):
tr_element = tr_elements[i]
td_elements_in_tr_element = tr_element.find_all("td")
rows_list.append([])
for j in range(0, len(td_elements_in_tr_element)):
td_element = td_elements_in_tr_element[j]
table_elements_in_td_element = td_element.find_all("table")
if len(table_elements_in_td_element) > 0:
continue
rows_list[i].append(td_element.text)
pprint.pprint(len(table_elements_in_td_element))
pprint.pprint(rows_list)
rows_list.remove([])
for row in rows_list:
table_dict[row[0]] = {
#'S/No.' : row[1],
'Document No.': row[1] + row[2],
'Tenders and Quotations': row[3] + row[4],
'Publication Date': row[5],
'Closing Date': row[6],
'Status': row[7]
}
pprint.pprint(table_dict)
with open('gebiz.csv', 'wb') as csvfile:
csvwriter = csv.writer(csvfile, dialect='excel')
for key in sorted(table_dict.iterkeys()):
csvwriter.writerow([table_dict[key]['Document No.'], table_dict[key]['Tenders and Quotations'], table_dict[key]['Publication Date'], table_dict[key]['Closing Date'], table_dict[key]['Status']])
非常感谢您的帮助。正如我在中看到的,您需要与java脚本交互,该脚本由按钮Go
或Next Page
按钮调用。对于“转到”按钮,每次都需要填写文本框。您可以使用不同的方法来解决此问题:
(一)
2) 再看看
3) 如果您熟悉c#,它还提供了一个组件,帮助您单击html元素。(例如)。您可以保存每个页面的html内容,然后从脱机页面抓取这些内容。非常感谢Nima Soroush提供的所有参考资料。不幸的是,我从未亲身体验过java脚本或c。我正试着和spynner一起锻炼。。如果有任何疑问,我们将再次在此发表评论。非常感谢。不客气。在这里您可以找到一些有用的示例()