CP番号に16308https : //www.icsi.in/Student/Default.aspx ? TabID = 100として入力した後、scrapypostリクエストを使用して検索結果を取得したいと思います。
これが私のスクレイプスパイダーコードです:-
def parse(self, response):
head=response.xpath('//span[@id="dnn_ctlHeader_dnnBreadcrumb_lblBreadCrumb"]/span[@class="SkinObject"]/text()').extract_first()
view_gen = response.xpath('//input[@id="__VIEWSTATEGENERATOR"]/@value').extract_first()
dnn= response.xpath('//input[@id="__dnnVariable"]/@value').extract_first()
view_state = response.xpath('//input[@id="__VIEWSTATE"]/@value').extract_first()
view_val = response.xpath('//input[@id="__EVENTVALIDATION"]/@value').extract_first()
data={
'__VIEWSTATEGENERATOR':view_gen,
'__dnnVariable':dnn,
'__VIEWSTATE':view_state,
'__EVENTVALIDATION':view_val,
'dnn$ctr410$MemberSearch$txtCpNumber':'16803',
'dnn$ctr410$MemberSearch$ddlMemberType':'0'
}
yield scrapy.FormRequest(response.url,formdata=data,callback=self.fun)
応答デバッグ:クロール(200)https://www.icsi.in/Student/Default.aspx?tabid=100&error=An%20unexpected%20error%20has%20occurred&content=0>(リファラー:https://www.icsi。 in / Student / Default.aspx?TabID = 100)[]
応答デバッグ:クロール(200)https://www.icsi.in/Student/Default.aspx?tabid=100&error=An%20unexpected%20error%20has%20occurred&content=0 >(参照元:https://www.icsi。 in / Student / Default.aspx?TabID = 100)[]
あなたの質問は、このエラーが正しく発生しないようにする方法です。将来的にはより具体的にするようにしてください。
Webページをスクレイプする場合は、ブラウザーですべてを検査する必要があります。リクエストとともに送信されるすべてのパラメーターを確認し、スパイダーでも同じことを行っていることを確認してください。コードにはたくさんのパラメーターがありますが、すべてではありません。
実際にあなたの問題を解決する以下の私のコードを見てください:
import scrapy
class MySpider(scrapy.Spider):
name = 'icsi'
start_urls = ['https://www.icsi.in/Student/Default.aspx?TabID=100']
search_action_url = 'https://www.icsi.in/Student/Default.aspx?TabID=100'
def parse(self, response):
formdata = dict()
for input in response.css('form#Form input'):
name = input.xpath('./@name').get()
value = input.xpath('./@value').get()
formdata[name] = str(value) if value else ''
formdata['dnn$ctr410$MemberSearch$txtCpNumber'] = '16308'
formdata['__EVENTTARGET'] = 'dnn$ctr410$MemberSearch$btnSearch'
return scrapy.FormRequest(self.search_action_url, formdata=formdata, callback=self.parse_search)
def parse_search(self, response):
scrapy.shell.inspect_response(response, self)
return
__EVENTTARGET
「検索」ボタンを押したことをサイトに通知するパラメータがありませんでした。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加