【问题标题】:scrapy: scraping data from javascript generated formscrapy:从 javascript 生成的表单中抓取数据
【发布时间】:2015-07-07 04:28:31
【问题描述】:

我指的是stackoverflow上列出的以下问题: Scrapy, scrapping data inside a javascript

我正在尝试复制@Rho 给出的这个问题的答案,以了解如何从 javascript 生成的表单中抓取数据。自发布此问题以来,表单的有效负载似乎发生了变化,因此我进行了相应修改。

我的代码和输出如下:

>>>scrapy shell https://www.mcdonalds.com.sg/locate-us/

2015-07-07 12:09:28+0800 [scrapy] INFO: Scrapy 0.24.6 started (bot: scrapybot)
.....
2015-07-07 12:09:28+0800 [default] INFO: Spider opened
2015-07-07 12:09:32+0800 [default] DEBUG: Crawled (200) <GET https://www.mcdonalds.com.sg/locate-us/> (referer: None)
....
>>> url = 'https://www.mcdonalds.com.sg/wp-admin/admin-ajax.php'
>>> payload = {'action':'store_locator_locations'}
>>> head = {'X-Requested-With':'XMLHttpRequest'}
>>> from scrapy.http import FormRequest
>>> req=FormRequest(url,formdata=payload,headers=head)
>>> fetch(req)
2015-07-07 12:12:24+0800 [default] DEBUG: Crawled (404) <POST https://www.mcdonalds.com.sg/wp-admin/admin-ajax.php> (referer: None)

预期的响应是200,但正如您在上面看到的,我收到了404 错误代码。

【问题讨论】:

    标签: javascript python scrapy


    【解决方案1】:

    这不是代码本身的问题。您提到的原始问题和答案来自2013;很久以前在互联网上。

    新加坡麦当劳的情况发生了变化,Wordpress 似乎也发生了变化。但也不是那么多。

    过去是什么

    url = 'https://www.mcdonalds.com.sg/wp-admin/admin-ajax.php'
    

    现在

    url = 'https://www.mcdonalds.com.sg/wp/wp-admin/admin-ajax.php'
    

    (我是通过使用 Chrome F12 开发者工具并查看“网络”选项卡发现的)

    其实,你可以向这个 url 发出GET 请求并返回 JSON:

    获取

    https://www.mcdonalds.com.sg/wp/wp-admin/admin-ajax.php?action=store_locator_locations

    [{
        "id": "417",
        "name": "McDonald\u2019s JCube",
        "address": "2 Jurong East Central 1<br\/>#01-09<br\/>JCube\r\n",
        "city": "Singapore",
        "lat": "1.33352",
        "long": "103.740277",
        "op_hours": "Mon-Fri: Opens at 0630<br>\r\nSat-Sun: Opens at 0700<br>\r\nSun-Thur: Closes at 2300 <br>\r\nFri\/Sat & PH Eve: Closes at 0000\r\n<br><br>\r\nDessert Kiosk: Daily 1100 - 2300",
        "phone": "66844228",
        "region": "west",
        "types": ["3"],
        "zip": "609731"
    },
    ...
    ]
    

    【讨论】:

      猜你喜欢
      • 2013-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-20
      • 1970-01-01
      相关资源
      最近更新 更多