gpt4 book ai didi

python - 如何使用python抓取aspx页面

转载 作者:行者123 更新时间:2023-12-01 03:48:38 25 4
gpt4 key购买 nike

我正在尝试抓取一个网站,https://www.searchiqs.com/nybro/ (您必须单击“以访客身份登录”才能进入搜索表单。如果我搜索“Andrew”等第 1 方术语,结果会分页,而且请求类型为 POST,因此 URL 不会更改而且 session 超时的速度非常快。如此之快,如果我等待十分钟并刷新搜索网址页面,就会出现超时错误。

我最近开始使用抓取,所以我主要是在做 GET 帖子,在那里我可以破译 URL。到目前为止,我已经意识到我必须查看 DOM。使用 Chrome 工具,我找到了标题。从网络选项卡中,我还发现以下内容作为从搜索页面传递到结果页面的表单数据

__EVENTTARGET:
__EVENTARGUMENT:
__LASTFOCUS:
__VIEWSTATE:/wEPaA8FDzhkM2IyZjUwNzg...(i have truncated this for length)
__VIEWSTATEGENERATOR:F92D01D0
__EVENTVALIDATION:/wEdAJ8BsTLFDUkTVU3pxZz92BxwMddqUSAXqb... (i have truncated this for length)
BrowserWidth:1243
BrowserHeight:705
ctl00$ContentPlaceHolder1$scrollPos:0
ctl00$ContentPlaceHolder1$txtName:david
ctl00$ContentPlaceHolder1$chkIgnorePartyType:on
ctl00$ContentPlaceHolder1$txtFromDate:
ctl00$ContentPlaceHolder1$txtThruDate:
ctl00$ContentPlaceHolder1$cboDocGroup:(ALL)
ctl00$ContentPlaceHolder1$cboDocType:(ALL)
ctl00$ContentPlaceHolder1$cboTown:(ALL)
ctl00$ContentPlaceHolder1$txtPinNum:
ctl00$ContentPlaceHolder1$txtBook:
ctl00$ContentPlaceHolder1$txtPage:
ctl00$ContentPlaceHolder1$txtUDFNum:
ctl00$ContentPlaceHolder1$txtCaseNum:
ctl00$ContentPlaceHolder1$cmdSearch:Search

所有大写的都被隐藏。我还设法弄清楚了结果结构。

到目前为止,我的脚本真的很可悲,因为我对下一步该做什么完全茫然。我仍然要提交表单,分析分页并抓取结果,但我完全不知道如何继续。

import re
import urlparse
import mechanize

from bs4 import BeautifulSoup

class DocumentFinderScraper(object):
def __init__(self):
self.url = "https://www.searchiqs.com/nybro/SearchResultsMP.aspx"
self.br = mechanize.Browser()
self.br.addheaders = [('User-agent',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7')]

##TO DO

##submit form

#get return URL

#scrape results

#analyze pagination


if __name__ == '__main__':
scraper = DocumentFinderScraper()
scraper.scrape()

任何帮助将不胜感激

最佳答案

我禁用了 Javascript 并访问了 https://www.searchiqs.com/nybro/表单如下所示:

enter image description here

如您所见,登录以访客身份登录按钮已被禁用。这将使 Mechanize 无法工作,因为它无法处理 Javascript,并且您将无法提交表单。

对于此类问题,您可以使用 Selenium,它将模拟完整的浏览器,但缺点是比 Mechanize 慢。

此代码应该使用 Selenium 登录:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

usr = ""
pwd = ""

driver = webdriver.Firefox()
driver.get("https://www.searchiqs.com/nybro/")
assert "IQS" in driver.title
elem = driver.find_element_by_id("txtUserID")
elem.send_keys(usr)
elem = driver.find_element_by_id("txtPassword")
elem.send_keys(pwd)
elem.send_keys(Keys.RETURN)

关于python - 如何使用python抓取aspx页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38546665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com