Scrapy是否支持用于网页抓取的JavaScript?

时间:2013-07-16 14:40:15

标签: javascript python screen-scraping scrapy

我听说scrapy不支持javascript。我想知道我是否可以使用scrapy来使用crawlspider抓取链接到我们的内部网站点,我们的内部网站点有javascript,我相信当你点击链接时会生成它,但我不是百分百肯定。

但是视图源是由xml-stylesheet构成的,当我使用firebug时它与html具有相同的数据。我也不能使用html标签刮取网站我需要使用xml标签才能刮掉。我很困惑为什么它既有html和xml以及两者的theres数据,为什么我不能仅仅扫描xml的xml?

我知道我可以使用xml标签抓取第一页但是我可以继续关注链接并继续抓取吗?

我是否仍然可以使用scrapy的crawlspider来抓取每个链接,或者我不能?如果我不能,你可以建议我可以使用的其他工具吗?支持javascripts和post authentication login(https)。?

谢谢!

这是我使用firebug时的HTML数据(与XML相同的数据)

<tr>
<td class="crt">1</td>
<td class="listCell" align="center">
<td class="listCell" align="center">
<a href="/dis/packages.jsp?view=list&show=perdevice&device_gid=3651746C4173775343535452414567746D75643855673D3D53564A6151624D41716D534C68395A6337634E2F62413D3D&hwdid=probe0&subscrbid=6505550000&mdn=6505550000&maxlength=100">probe0</a>
</td>
<td class="listCell" align="center">
<a href="/dis/packages.jsp?view=list&show=perdevice&device_gid=3651746C4173775343535452414567746D75643855673D3D53564A6151624D41716D534C68395A6337634E2F62413D3D&hwdid=probe0&subscrbid=6505550000&mdn=6505550000&maxlength=100">6505550000</a>
</td>
<td class="listCell" align="center">
<a href="/dis/packages.jsp?view=timeline&show=perdevice&device_gid=3651746C4173775343535452414567746D75643855673D3D53564A6151624D41716D534C68395A6337634E2F62413D3D&hwdid=probe0&subscrbid=6505550000&mdn=6505550000&maxlength=100&date=20130716T141624949">2013-07-16 14:16:24.949</a>
</td>
<td class="cell" align="center">2013-07-16 14:16:24.949</td>
<td class="cell" align="left">1 - SMS_PullRequest_CS</td>
<td class="listCell" align="right">
<a href="/dis/profile_download?profileId=4294967295">4294967295</a>
</td>
<td class="listCell" align="center">
<a href="/dis/sessions.jsp?view=list&device_gid=3651746C4173775343535452414567746D75643855673D3D53564A6151624D41716D534C68395A6337634E2F62413D3D&hwdid=probe0&mdn=6505550000&subscrbid=6505550000&maxlength=100">view sessions</a>
</td>
<td class="listCell" align="center">
<a href="/dis/errors_agg.jsp?view=list&device_gid=3651746C4173775343535452414567746D75643855673D3D53564A6151624D41716D534C68395A6337634E2F62413D3D&hwdid=probe0&mdn=6505550000&subscrbid=6505550000&maxlength=100">view errors</a>
</td>
</tr>

以下是使用视图源XML-Stylesheet(与HTML相同的数据)时的数据

<row>
<cell type="href" href="/dis/packages.jsp?view=list&show=perdevice&device_gid=3651746C4173775343535452414567746D75643855673D3D53564A6151624D41716D534C68395A6337634E2F62413D3D&hwdid=probe0&mdn=6505550000&subscrbid=6505550000&maxlength=100">6505550000</cell>
<cell type="href" href="/dis/packages.jsp?view=list&show=perdevice&device_gid=3651746C4173775343535452414567746D75643855673D3D53564A6151624D41716D534C68395A6337634E2F62413D3D&hwdid=probe0&subscrbid=6505550000&mdn=6505550000&maxlength=100">probe0</cell>
<cell type="href" href="/dis/packages.jsp?view=list&show=perdevice&device_gid=3651746C4173775343535452414567746D75643855673D3D53564A6151624D41716D534C68395A6337634E2F62413D3D&hwdid=probe0&subscrbid=6505550000&mdn=6505550000&maxlength=100">6505550000</cell>
<cell type="href" href="/dis/packages.jsp?view=timeline&show=perdevice&device_gid=3651746C4173775343535452414567746D75643855673D3D53564A6151624D41716D534C68395A6337634E2F62413D3D&hwdid=probe0&subscrbid=6505550000&mdn=6505550000&maxlength=100&date=20130716T143636194">2013-07-16 14:36:36.194</cell>
<cell type="plain">2013-07-16 14:36:36.194</cell>
<cell type="plain">1 - SMS_PullRequest_CS</cell>
<cell type="href" href="/dis/profile_download?profileId=4294967295">4294967295</cell>
<cell type="href" href="/dis/sessions.jsp?view=list&device_gid=3651746C4173775343535452414567746D75643855673D3D53564A6151624D41716D534C68395A6337634E2F62413D3D&hwdid=probe0&mdn=6505550000&subscrbid=6505550000&maxlength=100">view sessions</cell>
<cell type="href" href="/dis/errors_agg.jsp?view=list&device_gid=3651746C4173775343535452414567746D75643855673D3D53564A6151624D41716D534C68395A6337634E2F62413D3D&hwdid=probe0&mdn=6505550000&subscrbid=6505550000&maxlength=100">view errors</cell>
</row>

2 个答案:

答案 0 :(得分:0)

通常对于JS,您使用无头浏览器来执行您的javascript。 Splash使用scrapy-splash中间件和Selenium是两种流行的选择。

答案 1 :(得分:-1)

我也在努力与js刮刮......在那里高五。

一种快速的方式,我知道scrapy是否响应来自特定网站的js,是从scrapy shell检查。 http://doc.scrapy.org/en/latest/topics/shell.html您可以查看scrapy如何通过查看(响应)了解您的请求网址。

例如,view(响应)没有显示来自bestbuy的产品评论,但它可以用于eBay产品评论。

对于相关搜索,http://snipplr.com/all/tags/scrapy/可能会有所帮助。

如果你在这里贴蜘蛛也可能有用。

祝你好运!如果你解决它,请给我留言!