私はこの問題で数日間苦労しているので非常に大きな賛成を求めると思います。私はすべての可能な(私の最善の知識で)道を試みましたが、まだ結果はありませんでした。私は間違ったことをしていますが、それが何であるか把握できません。この冒険に行くのに十分なことをしてくれている皆さん、ありがとうございます。 最初のもの: 私はPOSTメソッドを使用してdelta.comにあるフォームに情報を投稿しようとしています いつもこのWebサイトではセッションやクッキー、Javascriptのように複雑なので問題になる可能性がありますそこ。 私はstackoverflowで見つけたコード例を使用しています: Using MultipartPostHandler to POST form-data with Python そしてここで私はdeltaのWebページのために微調整したコードです。PYTHON SCRAPY FORMSに情報をPOSTできない
from scrapy.selector import HtmlXPathSelector
from scrapy.http import FormRequest, Request
from delta.items import DeltaItem
from scrapy.contrib.spiders import CrawlSpider, Rule
class DmozSpider(CrawlSpider):
name = "delta"
allowed_domains = ["http://www.delta.com"]
start_urls = ["http://www.delta.com"]
def start_requests(self, response):
yield FormRequest.from_response(response, formname='flightSearchForm',url="http://www.delta.com/booking/findFlights.do", formdata={'departureCity[0]':'JFK', 'destinationCity[0]':'SFO','departureDate[0]':'07.20.2013','departureDate[1]':'07.28.2013','paxCount':'1'},callback=self.parse1)
def parse1(self, response):
hxs = HtmlXPathSelector(response)
sites = hxs.select('//')
items = []
for site in sites:
item = DeltaItem()
item['title'] = site.select('text()').extract()
item['link'] = site.select('text()').extract()
item['desc'] = site.select('text()').extract()
items.append(item)
return items
私は私が見るの端末でクロールするクモを指示します。
scrapy crawl delta -o items.xml -t xml
2013-07-01 13:39:30+0300 [scrapy] INFO: Scrapy 0.16.2 started (bot: delta)
2013-07-01 13:39:30+0300 [scrapy] DEBUG: Enabled extensions: FeedExporter, LogStats, TelnetConsole, CloseSpider, WebService, CoreStats, SpiderState
2013-07-01 13:39:30+0300 [scrapy] DEBUG: Enabled downloader middlewares: HttpAuthMiddleware, DownloadTimeoutMiddleware, UserAgentMiddleware, RetryMiddleware, DefaultHeadersMiddleware, RedirectMiddleware, CookiesMiddleware, HttpCompressionMiddleware, ChunkedTransferMiddleware, DownloaderStats
2013-07-01 13:39:30+0300 [scrapy] DEBUG: Enabled spider middlewares: HttpErrorMiddleware, OffsiteMiddleware, RefererMiddleware, UrlLengthMiddleware, DepthMiddleware
2013-07-01 13:39:30+0300 [scrapy] DEBUG: Enabled item pipelines:
2013-07-01 13:39:30+0300 [delta] INFO: Spider opened
2013-07-01 13:39:30+0300 [delta] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2013-07-01 13:39:30+0300 [scrapy] DEBUG: Telnet console listening on 0.0.0.0:6023
2013-07-01 13:39:30+0300 [scrapy] DEBUG: Web service listening on 0.0.0.0:6080
2013-07-01 13:39:33+0300 [delta] DEBUG: Crawled (200) <GET http://www.delta.com> (referer: None)
2013-07-01 13:39:33+0300 [delta] INFO: Closing spider (finished)
2013-07-01 13:39:33+0300 [delta] INFO: Dumping Scrapy stats:
{'downloader/request_bytes': 219,
'downloader/request_count': 1,
'downloader/request_method_count/GET': 1,
'downloader/response_bytes': 27842,
'downloader/response_count': 1,
'downloader/response_status_count/200': 1,
'finish_reason': 'finished',
'finish_time': datetime.datetime(2013, 7, 1, 10, 39, 33, 159235),
'log_count/DEBUG': 7,
'log_count/INFO': 4,
'response_received_count': 1,
'scheduler/dequeued': 1,
'scheduler/dequeued/memory': 1,
'scheduler/enqueued': 1,
'scheduler/enqueued/memory': 1,
'start_time': datetime.datetime(2013, 7, 1, 10, 39, 30, 734090)}
2013-07-01 13:39:33+0300 [delta] INFO: Spider closed (finished)
あなたは、リンクからの例と比較した場合、私は私は私はほとんど使用している場合でも、POSTメソッドを作ることに成功していることがわかりません同じコード。 私はサーバーに置いたW3schoolsの非常にシンプルなHTML/PHPフォームでしようとしましたが、そこにも同じものがありました。これまでPOSTを作成することは決してなかった。 問題はシンプルですが、私が持っているPythonの知識だけがScrapyであり、すべてのScrapyは私がオンラインで見つけたものです(私はよく書かれています)、そして例からですが、それでもまだ十分ではありません。ですから、少なくとも正しい方法を示すことができれば、それは非常に大きな助けになるでしょう。
引用をして、引用の 'robot.txt'を見てください。 –
うーん、いい点ですが、私は同じコードを使っています(http://www.w3schools.com/php/php_forms私のサーバーに置いたフォームでテストするために、私はrobot.txtファイルを持っていません。それは私に同じ結果をもたらしました。 –