Web scraping 我如何在Julia中进行网页抓取?

Web scraping 我如何在Julia中进行网页抓取?,web-scraping,julia,Web Scraping,Julia,我想从列表中提取大学及其网站的名称 在Python中,我使用BeautifulSoup v4实现了这一点: 导入请求 从bs4导入BeautifulSoup 作为pd进口熊猫 page=requests.get('https://thebestschools.org/features/best-computer-science-programs-in-the-world/') content=BeautifulSoup(page.text,'html.parser') 学院名称=[] 学院链接=

我想从列表中提取大学及其网站的名称

在Python中,我使用BeautifulSoup v4实现了这一点:

导入请求
从bs4导入BeautifulSoup
作为pd进口熊猫
page=requests.get('https://thebestschools.org/features/best-computer-science-programs-in-the-world/')
content=BeautifulSoup(page.text,'html.parser')
学院名称=[]
学院链接=[]
学院名称列表=内容。查找所有('h3',class='college')
对于学院名称列表中的学院:
如果是大学。查找('a'):
college\u name.append(college.find('a').text)
college_link.append(college.find('a')['href']))
我非常喜欢Julia中的编程,因为它与Python非常相似,我想知道我是否也可以在Julia中进行web抓取。任何帮助都将不胜感激。

是的

为了实现web抓取,Julia有三个库:

  • 下载网站的前端源代码(这与python的
    请求
    库相当)
  • 将下载的源代码解析为层次结构对象
  • 并最终使用CSS选择器API进行刮取
从您的个人资料中我看到您很年轻(16岁),并且您的python实现也是正确的

因此,我建议您尝试使用这三个库执行web抓取任务,以便更好地了解它们的工作原理

不幸的是,您希望使用Cascadia完成的任务还无法完成,因为
h3
位于
中,而当前在Cascadia.jl中没有实现SelectorType

您的python代码不能正常工作。 我想这个网站最近已经更新了。 因为据我所知,他们已经删除了链接,。 下面是一个使用and的类似示例

我正在使用内置命令下载网页。 将其写入临时文件中的磁盘,然后将其读入字符串。 它使用起来可能更干净,可以直接将其读入字符串。但对于这个简单的例子来说,这很好

using Gumbo
using Cascadia

url = "https://thebestschools.org/features/best-computer-science-programs-in-the-world/"

page = parsehtml(read(download(url), String))


college_name = String[]
college_location = String[]


sections = eachmatch(sel"section", page.root)
for section in sections
    maybe_col_heading = eachmatch(sel"h3.college", section)
    if length(maybe_col_heading) == 0
        continue
    end
    col_heading = first(maybe_col_heading)

    name = strip(text(last(col_heading.children)))
    push!(college_name, name)

    loc = first(eachmatch(sel".school-location", section))
    push!(college_location, text(loc[1]))
end


[college_name college_location]
输出 好像它两次上了麻省理工学院。 可能我的演示中的过滤代码不是很安静。 但是:耸耸肩:我听说麻省理工学院是一所很棒的大学。
Julia就是在那里发明的:joy:

提示:永远不要问存在哪些包可以在堆栈溢出时执行X操作。总是问如何做X。有两个原因:1.购物问题很快就解决了。2获得更好的答案,展示如何使用软件包或标准库函数。如果您想探索自己,请访问pkg.julialang.org并在搜索字段中键入“html”。还有“xml”。您会发现许多包允许您探索类似xml的文档。非常确定您可以使用Cascadia来实现这一点。我认为
span
本身就可以很好地工作?通过CSS样式选择器也值得指出的是,一个人可以通过julia中的python接口使用beautifulsoup本身。@tasos可能会给出一个单独的答案,说明如何做到这一点?@LyndonWhite呃,我确信在没有我添加另一个的情况下,已经有足够多的糟糕的pycall示例了…:P
julia> [college_name college_location]
51×2 Array{String,2}:
 "Massachusetts Institute of Technology (MIT)"  "Cambridge, Massachusetts"
 "Massachusetts Institute of Technology (MIT)"  "Cambridge, Massachusetts"
 "Stanford University"                          "Stanford, California"
 "Carnegie Mellon University"                   "Pittsburgh, Pennsylvania"
 ⋮

 "Shanghai Jiao Tong University"                "Shanghai, China"
 "Lomonosov Moscow State University"            "Moscow, Russia"
 "City University of Hong Kong"                 "Hong Kong"