标签: web-scraping

屏幕刮刀如何工作?

我听说人们一直在写这些程序,我知道他们做了什么,但他们是如何做到的呢?我正在寻找一般概念.

screen-scraping html-content-extraction pdf-scraping web-scraping console-scraping

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

Scrapy非常基本的例子

嗨我在我的Mac上安装了Python Scrapy,我试图在他们的网站上关注第一个例子.

他们试图运行命令:

scrapy crawl mininova.org -o scraped_data.json -t json
Run Code Online (Sandbox Code Playgroud)

我不太明白这是什么意思?看起来scrapy原来是一个单独的程序.而且我认为他们没有一个名为crawl的命令.在示例中,它们有一段代码,它是MininovaSpider类和TorrentItem的定义.我不知道这两个类应该去哪里,转到同一个文件,这个python文件的名称是什么?

python scrapy web-scraping

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

BeautifulSoup:'Response'类型的对象没有len()

问题:当我尝试执行脚本时,BeautifulSoup(html, ...)给出错误消息"TypeError:类型'对象的对象'没有len().我尝试将实际的html作为参数传递,但它仍然不起作用.

import requests

url = 'http://vineoftheday.com/?order_by=rating'
response = requests.get(url)
html = response.content

soup = BeautifulSoup(html, "html.parser")
Run Code Online (Sandbox Code Playgroud)

html python parsing beautifulsoup web-scraping

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

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

使用CasperJS和PhantomJS刮取Google关键字工具

我目前正在尝试使用CasperJS和PhantomJS(这两个都是优秀的工具,感谢n1k0和Ariya)来抓取谷歌关键字工具,但我无法让它发挥作用.

这是我目前的流程:

  1. 使用我的Google帐户登录(以避免在关键字工具中使用验证码).
  2. 导航到"关键字工具"页面.
  3. 填写搜索表单并按Search.

我坚持第3步:搜索表单不是常规HTML表单,我不能使用Casper#fill(),所以我直接访问字段.以下是我尝试更改Word or phrase字段值的一些语法:

this.evaluate(function() {

    // Trying to change the value...
    document.querySelector('textarea.sP3.sBFB').value = 'MY SUPER KEYWORDS';
    document.querySelector('textarea.sP3.sBFB').setAttribute('value', 'MY SUPER KEYWORDS');
    document.querySelector('textarea').value = 'MY SUPER KEYWORDS';   // there's only one <textarea> on the page

    // Trying to change other attributes...
    document.querySelector('textarea.sP3.sBFB').textContent = 'MY SUPER KEYWORDS';
    document.querySelector('textarea').style.backgroundColor = 'yellow';
});
Run Code Online (Sandbox Code Playgroud)

什么都行不通.我正在做一个Casper#capture()正确的,看看该字段包含什么.正如您所看到的,它确认我在正确的页面上并且我已登录,但它<textarea>是空的.

奇怪的是,我可以访问DOM的其他部分:我可以改变一个链接,说的文本Advanced Options and Filters___VINCE SAYS HELLO___(见截图),通过执行以下操作:

this.evaluate(function() { …
Run Code Online (Sandbox Code Playgroud)

javascript screen-scraping web-scraping phantomjs

19
推荐指数
1
解决办法
3834
查看次数

使用RCurl或httr自动登录R中的英国数据服务网站

我正在为http://asdfree.com/编写一组可自由下载的R脚本,以帮助人们分析英国数据服务托管的复杂样本调查数据.除了为这些数据集提供大量统计教程之外,我还想自动下载和导入此调查数据.为了做到这一点,我需要弄清楚如何以编程方式登录这个英国数据服务网站.

我已经尝试了许多不同的RCurlhttr配置来登录,但是我在某个地方犯了一个错误而且我被卡住了.我已经尝试检查这篇文章中概述的元素,但网站在浏览器中跳得太快,让我无法理解发生了什么.

这个网站确实需要登录名和密码,但我相信在进入登录页面之前我犯了一个错误.

以下是网站的运作方式:

起始页应为:https://www.esds.ac.uk/secure/UKDSRegister_start.asp

此页面将自动将您的Web浏览器重定向到以以下内容开头的长URL: https://wayf.ukfederation.org.uk/DS002/uk.ds?[blahblahblah]

(1)由于某种原因,SSL证书在本网站上不起作用.这是我发布的有关此问题的SO问题.我使用的解决方法是忽略SSL:

library(httr)
set_config( config( ssl.verifypeer = 0L ) )
Run Code Online (Sandbox Code Playgroud)

然后我在起始网站上的第一个命令是:

z <- GET( "https://www.esds.ac.uk/secure/UKDSRegister_start.asp" )
Run Code Online (Sandbox Code Playgroud)

这给了我一个z$url看起来很像https://wayf.ukfederation.org.uk/DS002/uk.ds?[blahblahblah]我的浏览器也重定向的页面.

然后,在浏览器中,您应该输入"英国数据存档"并单击continue按钮.当我这样做时,它会将我重定向到网页https://shib.data-archive.ac.uk/idp/Authn/UserPassword

我认为这是我被困的地方,因为我无法弄清楚如何followlocation在这个网站上获得cURL 和土地.注意:尚未输入用户名/密码.

当我使用wayf.ukfederation.org.uk页面中的httr GET命令时,如下所示:

 y <- GET( z$url , query = list( combobox = "https://shib.data-archive.ac.uk/shibboleth-idp" ) )
Run Code Online (Sandbox Code Playgroud)

y$url字符串看起来很像z$url(除非它有一个下拉框=上年底).有没有办法通过RCurlhttr进入此uk data …

curl r web-scraping rcurl httr

19
推荐指数
1
解决办法
2355
查看次数

R - 如何使用rvest或rcurl点击网页

我想从这个网页下载数据

数据很容易被删除rvest.

代码可能是这样的:

library(rvest)
library(pipeR)
url <- "http://www.tradingeconomics.com/"
css <-     "#ctl00_ContentPlaceHolder1_defaultUC1_CurrencyMatrixAllCountries1_GridView1"

data <- url %>>%
  html() %>>%
  html_nodes(css) %>>%
  html_table() 
Run Code Online (Sandbox Code Playgroud)

但是像这样的网页存在问题.

有一个+按钮显示所有国家/地区的数据,但默认值只是50个国家/地区的数据.

因此,如果我使用代码,我可以抓取50个国家/地区的数据.

+按钮是在人的javascript,所以我想知道是否有在某种程度上R点击按钮,然后刮数据.

r web-scraping rcurl rvest

19
推荐指数
1
解决办法
7060
查看次数

抓取https://www.thenewboston.com/时出现"SSL:certificate_verify_failed"错误

所以我最近在youtube上使用"新波士顿"视频开始学习Python,一切都很顺利,直到我开始制作一个简单的网络爬虫教程.虽然我理解它没有问题,但当我运行代码时,我得到的错误似乎都基于"SSL:CERTIFICATE_VERIFY_FAILED".自昨晚以来我一直在寻找答案,试图弄清楚如何修复它,似乎没有其他人在视频或他的网站上的评论中遇到与我相同的问题,甚至使用他的某些人的代码网站我得到了相同的结果.我将从网站上发布的代码发布代码,因为它给了我同样的错误,而我编码的代码现在变得一团糟.

import requests
from bs4 import BeautifulSoup

def trade_spider(max_pages):
    page = 1
    while page <= max_pages:
        url = "https://www.thenewboston.com/forum/category.php?id=15&orderby=recent&page=" + str(page) #this is page of popular posts
        source_code = requests.get(url)
        # just get the code, no headers or anything
        plain_text = source_code.text
        # BeautifulSoup objects can be sorted through easy
        for link in soup.findAll('a', {'class': 'index_singleListingTitles'}): #all links, which contains "" class='index_singleListingTitles' "" in it.
            href = "https://www.thenewboston.com/" + link.get('href')
            title = link.string # just the text, not the HTML …
Run Code Online (Sandbox Code Playgroud)

python ssl ssl-certificate web-scraping

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

美味的汤,如果类"包含"或正则表达式?

如果我的班级名字经常不同,比如说:

listing-col-line-3-11 dpt 41
listing-col-block-1-22 dpt 41
listing-col-line-4-13 CWK 12
Run Code Online (Sandbox Code Playgroud)

通常我可以这样做:

for EachPart in soup.find_all("div", {"class" : "ClassNamesHere"}):
            print EachPart.get_text()
Run Code Online (Sandbox Code Playgroud)

有太多的类名可以在这里使用,所以其中一些是出来的.

我知道Python没有我通常会使用的".contains"但它确实有一个"in".虽然我还没有找到一种方法来融入它.

我希望有一种方法可以用正则表达式做到这一点.虽然我的Python语法真的让我失望但我一直在尝试变化:

regex = re.compile('.*listing-col-.*')
    for EachPart in soup.find_all(regex):
Run Code Online (Sandbox Code Playgroud)

但这似乎并没有成功.

python regex beautifulsoup web-scraping

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

Telegram机器人可以读取频道的消息

电报机器人可以读取/访问我或机器人既不是管理员的电报频道吗?

我知道直到去年11月才有可能,但我听说有些人已经这样做了,但到目前为止我无法做到.

我非常感谢您的投入和知识.

Ps任何解决方法都会很棒.

python web-scraping telegram telegram-bot

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