Python网络浏览

2024-06-01 10:00:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Python从一个网站上获取数据。当我在浏览器中查看源代码时,我可以看到我要查找的所有内容。不过,我只想下载那部分代码。在

我知道beauthoulsoup不支持javascript(我根本不懂javascript),我想知道是否有一种方法可以下载所有原始源代码(基本上是一个硬拷贝),即使网站的某些部分是用javascript完成的。在

这是我目前为止的代码:

 r = requests.get('https://www.example.com/example/example')
 data = BeautifulSoup(r.content)
 example1 = data.find_all("class_="example2") 
 examples = []
 for example in example1:
     examples.append(link.get('href'))

我知道如果没有实际的源代码,很难彻底回答我的问题。很遗憾我不能显示代码!希望这不是什么大问题。在


Tags: 方法代码内容dataget源代码网站example
3条回答

在没有浏览器的情况下,很难获得动态(基于JavaScript)网站的完整副本,这就是为什么获得此类副本最简单的方法是使用浏览器。在

您可以查看PhantomJS和{a2}来控制浏览器并下载HTML,或者只使用^{}运行PhantomJS。在

下载网站内容的非常简单的PhantomJS脚本:

"use strict";
var fs = require('fs');
var system = require('system');
var webpage = require('webpage');
if (system.args.length != 2) {
    console.log('Usage: gethtml.js <url>');
    phantom.exit(1);
} else {
    var url = system.args[1];
    var page = webpage.create();
    page.open(url, function(status) {
        if (status !== 'success') {
            phantom.exit(2);
        }
        setTimeout(function() {
            console.log(page.content);
            phantom.exit();
        }, 500);
    });
}

这将在“下载”之前等待500毫秒,这取决于站点和internet连接这是不够的或太多了,您可以通过使用onResourceReceived回调等待PhantomJS停止下载数据X秒来改进它。在

也许不是最好的解决方案,但是如果你只想解析链接,这里是我的2美分。在

import requests
from BeautifulSoup import BeautifulSoup
r = requests.get('http://www.examples.com')
data = BeautifulSoup(r.content)
examples = []
for d in data.findAll('a'):
    examples.append(d)

当然,您可以搜索类,例如:

^{pr2}$

您的代码错误且毫无意义:

r = requests.get('https://www.example.com/example/example')
data = BeautifulSoup(r.content)
aes = data.find_all("class_="example2") 
result = []
for a in aes:
    result.append(a.attrs['href'])

相关问题 更多 >