如何使用Scrapy 1.4.0从javascript中刮取数据?

如何使用Scrapy 1.4.0从javascript中刮取数据?,javascript,scrapy,Javascript,Scrapy,对不起我的英语。我是初学者,需要一些指导。我在清理一些网站时遇到了问题。这是我的蜘蛛: import scrapy from bs4 import BeautifulSoup as bs class SomeSiteSpider(scrapy.Spider): name = 'somesite' def start_requests(self): urls = [ 'http://somesite.ru/proxies/'

对不起我的英语。我是初学者,需要一些指导。我在清理一些网站时遇到了问题。这是我的蜘蛛:

import scrapy
from bs4 import BeautifulSoup as bs

class SomeSiteSpider(scrapy.Spider):
    name = 'somesite'

    def start_requests(self):
        urls = [
            'http://somesite.ru/proxies/'
        ]

        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        token = response.css('input[name="xf0"]::attr(value)').extract_first()
        data = {
            'xpp': '4',
            'xf1': '4',
            'xf0': token,
            'xf2': '0',
            'xf4': '0'
        }
        yield scrapy.FormRequest(url='http://somesite.ru/proxies/', formdata=data, callback=self.parse_proxy, method='POST')

    def parse_proxy(self, response):
        page = bs(response.body, "html.parser")
        table = page.select('td[align="center"] > table[cellspacing="1"]')
        table = bs(str(table), 'html.parser')
        print(table.prettify())
我需要解析这个:

<font class="spy14">
  "200.200.200.200"
  <script type="text/javascript"></script>
  <font class="spy2">:</font>
  "8080"
</font>

"200.200.200.200"
:
"8080"
但是我的蜘蛛输出:

<font class="spy14">
    200.200.200.200
    <script type="text/javascript">
     document.write("<font class=spy2>:<\/font>"+(l2k1o5^f6l2)+(j0s9i9^e5z6)+(i9w3m3^s9p6)+(g7u1q7^u1j0)+(h8x4r8^n4s9))
    </script>
</font>

200.200.200.200
写(“:”+(l2k1o5^f6l2)+(j0s9i9^e5z6)+(i9w3m3^s9p6)+(g7u1q7^u1j0)+(h8x4r8^n4s9))
在这个网站上没有


Scrapy不会开箱即用地执行Javascript。要做到这一点,您需要将PhantomJS或Splash等浏览器模拟集成到scrapy中。您还可以使用Selenium在真实的浏览器实例中呈现Javascript,尽管这更为复杂


对于入门,我建议使用Splash。它有很好的文档记录,并且与scrapy集成得很好,因为它是由scrapy开发人员构建的。这里有一个很好的入门点:

javascript部分不是executed@Arijon,如何执行此脚本?谢谢,但是Splash需要Docker,Docker需要OS X El Capitan。我有OSX小牛…幻影和硒帮助我,非常感谢!使用流浪的码头工人。我运行windows,这就是我运行docker容器的方式。