标签: web-scraping

如何使用scrapy中的CrawlSpider点击一个带有javascript onclick的链接?

我希望scrapy抓取页面,进入下一个链接看起来像这样:

<a href="#" onclick="return gotoPage('2');"> Next </a>
Run Code Online (Sandbox Code Playgroud)

scrapy能解释那个javascript代码吗?

通过livehttpheaders扩展,我发现单击Next会生成一个POST,其中包含一个非常大的"垃圾",如下所示:

encoded_session_hidden_map=H4sIAAAAAAAAALWZXWwj1RXHJ9n
Run Code Online (Sandbox Code Playgroud)

我正在尝试在CrawlSpider类上构建我的蜘蛛,但我无法弄清楚如何对它进行编码,BaseSpider我使用该parse()方法处理第一个URL,这恰好是一个登录表单,我在其中执行了一个POST:

def logon(self, response):
    login_form_data={ 'email': 'user@example.com', 'password': 'mypass22', 'action': 'sign-in' }
    return [FormRequest.from_response(response, formnumber=0, formdata=login_form_data, callback=self.submit_next)]
Run Code Online (Sandbox Code Playgroud)

然后我定义了submit_next()来告诉下一步该做什么.我无法弄清楚如何告诉CrawlSpider在第一个URL上使用哪种方法?

我抓取的所有请求(第一个除外)都是POST请求.它们交替使用两种类型的请求:粘贴一些数据,然后单击"下一步"转到下一页.

javascript python onclick scrapy web-scraping

24
推荐指数
1
解决办法
1万
查看次数

获取reddit数据

我有兴趣从不同的reddit subreddit获取数据.有没有人知道是否有类似twitter的reddit/other api会抓取所有页面?

reddit web-scraping

24
推荐指数
2
解决办法
2万
查看次数

Android:在Activity上下文之外使用WebView

我正在尝试通过后台IntentService实现Web Scraping,该后台定期抓取网站而不在用户手机上显示视图.

  • 因为我必须在加载的页面上调用一些javascript我不能使用任何HttpGet等.
  • 因此,我必须使用只能在UI线程上运行的WebView实例.
  • 任何尝试启动使用WebView的Activity都会导致View进入手机前景(根据Android的活动设计)
  • 任何在Activity上下文之外使用WebView的尝试都会导致错误,指出您无法在非UI线程上使用WebView.
  • 出于各种复杂性的原因,我不能考虑使用像Rhino这样的库来实现无UI的网页抓取.

有什么方法可以解决这个问题吗?

android web-scraping android-webview intentservice android-activity

24
推荐指数
3
解决办法
2万
查看次数

如何使用Jsoup通过HTTPS连接?

它在HTTP上运行良好,但是当我尝试使用HTTPS源时,它会抛出以下异常:

10-12 13:22:11.169: WARN/System.err(332): javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
10-12 13:22:11.179: WARN/System.err(332):     at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:477)
10-12 13:22:11.179: WARN/System.err(332):     at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:328)
10-12 13:22:11.179: WARN/System.err(332):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.setupSecureSocket(HttpConnection.java:185)
10-12 13:22:11.179: WARN/System.err(332):     at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:433)
10-12 13:22:11.189: WARN/System.err(332):     at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl$HttpsEngine.makeConnection(HttpsURLConnectionImpl.java:378)
10-12 13:22:11.189: WARN/System.err(332):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:205)
10-12 13:22:11.189: WARN/System.err(332):     at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:152)
10-12 13:22:11.189: WARN/System.err(332):     at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:377)
10-12 13:22:11.189: WARN/System.err(332):     at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:364)
10-12 13:22:11.189: WARN/System.err(332):     at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:143)
Run Code Online (Sandbox Code Playgroud)

这是相关的代码:

try {
    doc = Jsoup.connect("https url here").get();
} catch (IOException e) {
    Log.e("sys","coudnt get the html"); …
Run Code Online (Sandbox Code Playgroud)

java https android web-scraping jsoup

23
推荐指数
4
解决办法
4万
查看次数

使用python读取动态生成的网页

我正在尝试使用python和美丽的汤刮一个网站.我在某些网站遇到过,虽然在浏览器上看到的图片链接在源代码中无法看到.但是,在使用Chrome Inspect或Fiddler时,我们可以看到相应的代码.我在源代码中看到的是:

<div id="cntnt"></div>
Run Code Online (Sandbox Code Playgroud)

但是在Chrome Inspect上,我可以看到在这个div类中生成的一大堆HTML\CSS代码.有没有办法在python中加载生成的内容?我在python中使用常规urllib,我可以获取源但没有生成的部分.

我不是网络开发者,因此我无法用更好的术语表达这种行为.如果我的问题看起来模糊,请随时澄清!

python web-scraping

23
推荐指数
2
解决办法
4万
查看次数

如何在casperJs中设置输入标记的值

我有输入元素如图所示:

<input type="text" class="bg-white" id="couponCode" value="">

如何使用casperJs设置/填充其值

web-scraping phantomjs casperjs

23
推荐指数
1
解决办法
2万
查看次数

YouTube评论刮刀返回的结果有限

任务:

我想从给定的视频中删除所有YouTube评论.

我成功地修改了上一个问题的R代码(Scraping Youtube在R中的评论).

这是代码:

library(RCurl)
library(XML)
x <- "https://gdata.youtube.com/feeds/api/videos/4H9pTgQY_mo/comments?orderby=published"
html = getURL(x)
doc  = htmlParse(html, asText=TRUE) 
txt  = xpathSApply(doc, 
"//body//text()[not(ancestor::script)][not(ancestor::style)[not(ancestor::noscript)]",xmlValue)
Run Code Online (Sandbox Code Playgroud)

要使用它,只需将视频ID(即"4H9pTgQY_mo")替换为您需要的ID即可.

问题:

问题是它没有返回所有评论.实际上,无论视频中有多少注释,它总是返回一个包含283个元素的向量.

谁能请点亮这里出了什么问题?令人难以置信的是令人沮丧.谢谢.

r youtube-api web-scraping

23
推荐指数
1
解决办法
2182
查看次数

CrawlerProcess与CrawlerRunner

Scrapy 1.x文档解释了从脚本运行Scrapy蜘蛛有两种方法:

两者有什么区别?什么时候应该使用"过程"和"跑步者"?

python scrapy web-scraping

23
推荐指数
2
解决办法
6892
查看次数

如何通过无头chrome管理登录会话?

我需要刮刀:

打开无头浏览器,转到网址,登录(有蒸汽oauth),填写一些输入,点击2按钮

问题是无头浏览器的每个新实例都清除我的登录会话,然后我需要一次又一次地登录...如何通过实例保存它?例如使用带无头镀铬的木偶操纵者

或者我如何打开已登录的chrome无头实例?如果我已经登录了我的主要Chrome窗口

javascript cookies headless web-scraping puppeteer

23
推荐指数
3
解决办法
2万
查看次数

使用Python刮取和解析Google搜索结果

我问了一个关于实现抓取和保存网页的一般想法的问题.原始问题的一部分是:如何从Internet抓取并保存大量"关于"页面.

通过一些进一步的研究,我可以选择继续进行刮擦和解析(在下面列出).

今天,我遇到了另一个关于如何从Google搜索结果中删除的Ruby讨论.这为我的问题提供了一个很好的选择,它将节省爬行部分的所有工作量.

问题是:在Python中,为了给定关键字刮取 Google搜索结果,在本例中为"关于",最后获取进一步解析的链接.有哪些方法和库的最佳选择?(以易于学习和易于实施的方式衡量).

ps在这个网站上,实现完全相同的东西,但关闭并要求钱以获得更多结果.如果没有开源可用,我宁愿自己做,也可以在同时学习更多Python.

哦,顺便说一句,从搜索结果中解析链接的建议会很好,如果有的话.仍然,易于学习和易于实施.刚开始学习Python.:P


最后更新,问题解决了.使用xgoogle的代码,请阅读以下部分中的说明,以使xgoogle正常运行.

import time, random
from xgoogle.search import GoogleSearch, SearchError

f = open('a.txt','wb')

for i in range(0,2):
    wt = random.uniform(2, 5)
    gs = GoogleSearch("about")
    gs.results_per_page = 10
    gs.page = i
    results = gs.get_results()
    #Try not to annnoy Google, with a random short wait
    time.sleep(wt)
    print 'This is the %dth iteration and waited %f seconds' % (i, wt)
    for res in results:
        f.write(res.url.encode("utf8"))
        f.write("\n")

print …
Run Code Online (Sandbox Code Playgroud)

python screen-scraping google-search-api web-scraping

22
推荐指数
1
解决办法
5万
查看次数