[英]How to scrape JavaScript rendered data from a website using Scrapy?
[英]How scrape data from javascript with Scrapy 1.4.0?
对不起我的英语不好。 我是初学者,需要一些指导。 我在刮除某些网站时遇到了问题。 这是我的蜘蛛:
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>
但是我的蜘蛛输出:
<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>
该网站上没有AJAX请求 。
Scrapy不会开箱即用地执行Javascript。 为此,您需要将PhantomJS或Splash之类的浏览器仿真集成到scrapy中。 您还可以使用Selenium在真实的浏览器实例中呈现Javascript,尽管这甚至更加复杂。
首先,我建议您使用Splash。 它是由Scrap开发人员建立的,有据可查,并且与Scrapy集成得很好。 入门的好方法是: https : //github.com/scrapy-plugins/scrapy-splash
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.