python - 使用 scrapy 抓取数据

标签 python html web-crawler scrapy

我想从此链接http://money.moneygram.com.au/ 中删除数据(链接可以是(https://www.moneygram.com/wps/portal/moneygramonline/home/estimator?LC=en-GB)) 当我打开 html 页面以废弃数据时,即此页面上提到的汇率是我为第一个下拉按钮选择的选项是 aud(austallian currency) to usd(us dollar) 但如何在第一个选项中选择 inr(indian ruppee)。当我选择并使用此 url 时,它默认选择 aud(澳大利亚货币)。我使用的代码是......

 from __future__ import absolute_import
    #import __init__
 from scrapy.spider import BaseSpider
 from scrapy.selector import HtmlXPathSelector
 import MySQLdb

class DmozSpider(BaseSpider):
    name = "moneygram"
    allowed_domains = ["moneygram.com"]
    start_urls = ["http://money.moneygram.com.au/"]

    def parse(self, response):
        filename = response.url.split("/")[-2]
        open(filename, 'wb').write(response.body)
        hxs = HtmlXPathSelector(response)

我想要选择 inr 的 html 部分是..

<div class="firstSelector">
     <select id="FromCurrency_dropDown" name="FromCurrency_dropDown" style="width:100%">
     <option value="AED">AED (UAE Dirham)</option>
     <option value="ARS">ARS (Argentine Peso)</option>
     <option selected="selected" value="AUD">AUD (Australian Dollar)</option>  
     <option value="BGN">BGN (Bulgarian Lev)</option>
     <option value="BND">BND (Brunei Dollar)</option>
     <option value="BRL">BRL (Brazilian Real)</option>
     <option value="CAD">CAD (Canadian Dollar)</option>
     <option value="CHF">CHF (Swiss Franc)</option>
     <option value="CLP">CLP (Chilean Peso)</option>
     <option value="CNH">CNH (Chinese Renminbi Off-Shore)</option>
     <option value="CNY">CNY (Chinese Yuan)</option>
     <option value="CZK">CZK (Czech Koruna)</option>
     <option value="DKK">DKK (Danish Kroner)</option>
     <option value="EGP">EGP (Egyptian Pound)</option>
     <option value="EUR">EUR (Euro)</option>
     <option value="FJD">FJD (Fiji Dollar)</option>
     <option value="GBP">GBP (British Pound)</option>
     <option value="HKD">HKD (Hong Kong Dollar)</option>
     <option value="HUF">HUF (Hungarian Forint)</option>
     <option value="IDR">IDR (Indonesian Rupiah)</option>
     <option value="ILS">ILS (Israeli New Shekel)</option>
     <option value="INR">INR (Indian Rupee)</option> ////////////"i want this to be selected"///////
     <option value="ISK">ISK (Icelandic Krona)</option>
     <option value="JPY">JPY (Japanese Yen)</option>
     <option value="KRW">KRW (Korean Won)</option>
     <option value="KWD">KWD (Kuwaiti Dinar)</option>
     <option value="LKR">LKR (Sri Lanka Rupee)</option>
     <option value="MAD">MAD (Moroccan Dirham)</option>
     <option value="MGA">MGA (Malagasy Ariary)</option>
     <option value="MXN">MXN (Mexican Peso)</option>
     <option value="MYR">MYR (Malaysian Ringgit)</option>
     <option value="NOK">NOK (Norway Kroner)</option>
     <option value="NZD">NZD (New Zealand Dollar)</option>
     <option value="OMR">OMR (Omani Rial)</option>
     <option value="PEN">PEN (Peruvian Nuevo Sol)</option>
     <option value="PGK">PGK (Papua New Guinea Kina)</option>

</div>

最佳答案

这是一个ajax问题。 js脚本将参数传给服务器,然后服务器返回数据。

使用 chrome 工具,可以探索帖子数据的详细 url。

详细网址是“http://money.moneygram.com.au/forex-tools/currency-converter-widget-part”。

和发布表单参数: “FromCurrency=AED&ToCurrency=VND&FromCurrency_dropDown=AED&ToCurrency_dropDown=VND&FromAmount=2561&ToAmount=&X-Requested-With=XMLHttpRequest”。

所以你可以使用 scrapy POST 参数到这个 url 来获取 html 数据,并解析得到你想要的。

关于python - 使用 scrapy 抓取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22681180/

相关文章:

Python编码格式

html - 当图片需要覆盖页面的整个部分时,图片只覆盖正文的一小部分

javascript - 无法从 php 获取 json 到 html(有时有效,有时无效..)

python - 部署scrapy项目时出错

python - Scrapy CrawlSpider 和 LinkExtractor 规则不适用于分页

python - 更改链式操作中的所有列名

python - Spacy 获取特定单词的位置和标签

Python:__subclasses__ 顺序

javascript - 基于元素id的onclick函数

java - 动态优化线程数