小编Vis*_*ain的帖子

如何从晨星上抓取数据

所以我对网络抓取世界还是个新手,到目前为止我只真正使用 beautifulsoup 从网站上抓取文本和图像。我想我应该尝试从图表中刮掉一些数据点来测试我的理解,但我对这张图表有点困惑。

在检查了我想要提取的数据片段的元素后,我看到了这一点: <span id="TSMAIN">: 100.7490637</span> 问题是,我抓取数据点的最初想法是迭代某种包含所有不同数据点的 id 列表(如果说得通?)。

相反,似乎所有数据点都包含在同一个元素中,并且该值取决于光标在图表上的位置。

id我的问题是,如果我使用 beautifulsoups find 函数并在具有=属性的特定元素中键入TSMAIN,我会得到一个无类型返回,因为我猜测除非我将光标放在实际图表上,否则不会显示任何内容。

代码:

from bs4 import BeautifulSoup 
import requests
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36"}
url = "https://www.morningstar.co.uk/uk/funds/snapshot/snapshot.aspx?id=F0GBR050AQ&tab=13"
source=requests.get(url,headers=headers)
soup = BeautifulSoup(source.content,'lxml')
data = soup.find("span",attrs={"id":"TSMAIN"})
print(data)
Run Code Online (Sandbox Code Playgroud)

输出

None
Run Code Online (Sandbox Code Playgroud)

如何提取该图的所有数据点?

python beautifulsoup web-scraping

3
推荐指数
1
解决办法
5614
查看次数

为什么这个 double 类型变量在作为函数参数传递时默认为 int ?

我正在学习 C 并试图帮助调试朋友的代码。他在全局范围内定义他的函数参数,然后像这样将它们传递给函数 def :

#include <stdio.h>

double x;


double myfunc(x){
    return x;    
}

void main(){

}
Run Code Online (Sandbox Code Playgroud)

我明白这是错误的,但不是为什么出现以下错误:

main.c:14:8: warning: type of ‘x’ defaults to ‘int’ [-Wimplicit-int] 
Run Code Online (Sandbox Code Playgroud)

有人能帮我理解计算机是如何解释这段代码的吗?

c function-parameter variable-declaration

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

关于C中指针和数组等价的问题

我试图测试我对指针的理解并编写了以下代码:

#include <stdio.h>
int main(){
    char array_of_chars[]="array of chars";
    char *pointer_to_a_char="pointer to a char";
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我对为什么 2 行代码是定义字符串的等效方法的理由是:

第一个创建一个大小不定的数组(受堆栈中可用内存的限制?),它存储类型为 char 的变量。

第二个创建了一个指向 char 类型变量的指针,然后通过 * 符号我们将其汇集到该内存地址在 RAM 中指向的位置,然后从该点开始写入我们的字符串。

以上编译没有错误。

然而,这个新代码给出了警告。

新代码:

#include <stdio.h>
int main(){
    int myint = 5;
    int *pointer_to_an_int = 5;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)
 warning: initialization makes pointer from integer without a cast [-Wint-conversion]
  int *pointer_to_an_int = 5;
Run Code Online (Sandbox Code Playgroud)

我只是想知道为什么我们会在第二种情况下收到警告,而在第一种情况下没有。

我有一种感觉,这与以下事实有关:在第一种情况下,我们定义了一个数组,它是一个内存地址,但在第二种情况下,我们正在定义一个不同的变量?我不知道警告的确切原因,希望有人能解释一下。

c

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