标签: web-scraping

从网站上抓取数据的最佳方法是什么?

我需要从网站中提取内容,但应用程序不提供任何应用程序编程接口或其他机制来以编程方式访问该数据.

我找到了一个名为Import.io的有用的第三方工具,它提供了用于抓取网页和构建数据集的点击操作功能,唯一的一件事就是我想在本地保存我的数据,而且我不想订阅任何订阅计划.

该公司使用什么样的技术来抓取网页并构建他们的数据集?我发现一些网络抓取框架pjscrapeScrapy可以提供这样的功能

api screen-scraping web-scraping

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

如何使用Python请求伪造浏览器访问?

我想从以下网站获取内容.如果我使用像Firefox或Chrome这样的浏览器,我可以获得我想要的真实网站页面,但如果我使用Python请求包(或wget命令)来获取它,它将返回一个完全不同的HTML页面.我认为网站的开发者为此做了一些块,所以问题是:

如何使用python请求或命令wget伪造浏览器访问?

http://www.ichangtou.com/#company:data_000008.html

html python wget web-scraping python-requests

100
推荐指数
6
解决办法
14万
查看次数

网页抓取和网页抓取有什么区别?

抓取和网络抓取之间有区别吗?

如果存在差异,那么为了收集一些网络数据以供以后在定制搜索引擎中使用的数据库,最好的方法是什么?

search-engine web-crawler web-scraping

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

Puppeteer:在.evaluate()中传递变量

我正在尝试将变量传递给Puppeteer中page.evaluate()函数,但是当我使用以下非常简化的示例时,变量是未定义的.evalVar

我是Puppeteer的新手,找不到任何构建的例子,所以我需要帮助将该变量传递给page.evaluate()函数,以便我可以在里面使用它.

const puppeteer = require('puppeteer');

(async() => {

  const browser = await puppeteer.launch({headless: false});
  const page = await browser.newPage();

  const evalVar = 'WHUT??';

  try {

    await page.goto('https://www.google.com.au');
    await page.waitForSelector('#fbar');
    const links = await page.evaluate((evalVar) => {

      console.log('evalVar:', evalVar); // appears undefined

      const urls = [];
      hrefs = document.querySelectorAll('#fbar #fsl a');
      hrefs.forEach(function(el) {
        urls.push(el.href);
      });
      return urls;
    })
    console.log('links:', links);

  } catch (err) {

    console.log('ERR:', err.message);

  } finally {

    // browser.close();

  }

})();
Run Code Online (Sandbox Code Playgroud)

javascript evaluate web-scraping puppeteer

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

硒与scrapy动态页面

我正在尝试使用scrapy从网页上抓取产品信息.我的待删节网页如下所示:

  • 从包含10个产品的product_list页面开始
  • 点击"下一步"按钮加载下10个产品(两个页面之间的网址不变)
  • 我使用LinkExtractor跟踪每个产品链接到产品页面,并获得我需要的所有信息

我试图复制next-button-ajax-call但是无法正常工作,所以我试试了selenium.我可以在一个单独的脚本中运行selenium的webdriver,但我不知道如何与scrapy集成.我应该把硒部分放在我的scrapy蜘蛛里?

我的蜘蛛非常标准,如下所示:

class ProductSpider(CrawlSpider):
    name = "product_spider"
    allowed_domains = ['example.com']
    start_urls = ['http://example.com/shanghai']
    rules = [
        Rule(SgmlLinkExtractor(restrict_xpaths='//div[@id="productList"]//dl[@class="t2"]//dt'), callback='parse_product'),
        ]

    def parse_product(self, response):
        self.log("parsing product %s" %response.url, level=INFO)
        hxs = HtmlXPathSelector(response)
        # actual data follows
Run Code Online (Sandbox Code Playgroud)

任何想法都表示赞赏.谢谢!

python selenium scrapy web-scraping selenium-webdriver

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

使用Java进行Web抓取

我无法找到任何好的网络抓取基于Java的API.我需要抓取的网站也没有提供任何API; 我想使用一些网页遍历所有网页,pageID并在其DOM树中提取HTML标题/其他内容.

除了网络抓取之外还有其他方法吗?

java frameworks web-scraping

72
推荐指数
6
解决办法
13万
查看次数

Google Chrome扩展程序中的网页搜寻(JavaScript + Chrome API)

使用JavaScript以及可用的更多技术从Google Chrome扩展程序中执行网页刮取当前未打开的标签的最佳选项有哪些.其他JavaScript库也被接受.

重要的是掩盖抓取行为就像普通的Web请求一样.没有AJAX或XMLHttpRequest的指示,如X-Requested-With: XMLHttpRequestOrigin.

必须可以从JavaScript访问已删除的内容,以便在扩展中进一步操作和呈现,最有可能是作为字符串.

在任何WebKit/Chrome特定的API中是否有任何钩子:s可用于制作正常的Web请求并获取操作结果?

var pageContent = getPageContent(url); // TODO: Implement
var items = $(pageContent).find('.item');
// Display items with further selections
Run Code Online (Sandbox Code Playgroud)

Bonus-points使这项工作从磁盘上的本地文件开始,用于初始调试.但如果这是唯一的一点是停止解决方案,那么就忽略奖励积分.

javascript google-chrome xmlhttprequest google-chrome-extension web-scraping

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

如何管理PhantomJS实例的"池"

我正在计划内部使用的webservice,它接受一个参数,一个URL,并返回表示该URL中已解析 DOM的html .通过解决,我的意思是webservice将首先获取该URL的页面,然后使用PhantomJS"渲染"页面,然后在执行所有DHTML,AJAX调用等之后返回结果源.但是发动对每个请求的基础(这是我现在做)幽灵的方式过于缓慢.我宁愿拥有一个PhantomJS实例池,其中一个实例可用于为我的webservice提供最新的调用.

以前有没有做过这方面的工作?我宁愿将这个web服务基于其他人的工作,而不是从头开始为我自己编写一个池管理器/ http代理服务器.

更多上下文:我列出了迄今为止我见过的两个类似的项目,以及为什么我避免了每个项目,这导致了关于管理PhantomJS实例池的问题.

jsdom - 从我所看到它在页面上执行脚本具有很强的功能,但它不会尝试复制浏览器行为,因此如果我将它用作通用的"DOM解析器",那么它最终会成为很多额外的编码来处理各种边缘情况,事件调用等.我看到的第一个例子是必须为我使用node设置的测试应用程序手动调用body标签的onload()函数.这似乎是一个深深的兔子洞的开始.

Selenium - 它只有很多移动部件,因此设置一个池来管理长期存在的浏览器实例将比使用PhantomJS更复杂.我不需要它的任何宏录制/脚本功能.我只想要一个能够获得网页并解析它的DOM的web服务,就好像我用浏览器浏览到那个URL一样(如果我可以让它忽略图像等,甚至更快)

node.js web-scraping jsdom phantomjs

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

使用Node.js实时抓取网页

使用Node.js刮取网站内容有什么好处.我想构建非常非常快的东西,可以执行kayak.com风格的搜索,其中一个查询被分派到几个不同的站点,结果被删除,并在它们可用时返回给客户端.

我们假设这个脚本应该只提供JSON格式的结果,我们可以直接在浏览器或其他Web应用程序中处理它们.

一些起点:

使用node.js和jquery来抓取网站

有人有什么想法吗?

javascript jquery screen-scraping node.js web-scraping

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

从Google搜索结果中抓取数据是否可以?

我想使用curl从Google获取结果,以检测潜在的重复内容.是否存在被Google禁止的高风险?

web-scraping

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