标签: web-scraping

从网络上抓取 URL

<a href="http://www.utoronto.ca/gdrs/" title="Rehabilitation Science"> Rehabilitation Science</a>
Run Code Online (Sandbox Code Playgroud)

对于上面的例子,我想同时获取部门名称“康复科学”及其主页网址“http://www.utoronto.ca/gdrs/”。

有人可以建议一些可以为我完成这项工作的智能正则表达式吗?

ruby regex url hpricot web-scraping

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

Python 网页抓取,如果错误则跳过 url

我正在尝试抓取一个网站(大约 7000 个链接,全部在一个列表中),由于我的方法,它需要很长时间,我想我对此没有意见(因为这意味着不被发现)。但是,如果我在尝试检索页面时遇到任何类型的错误,我可以跳过它吗?现在,如果出现错误,代码就会中断并给出一堆错误消息。这是我的代码:

Collection是列表的列表和结果文件。基本上,我试图运行一个循环get_url_data()(我有一个之前的问题要感谢),我的所有网址都在urllist. 我有一个叫做HTTPError但似乎不能处理所有错误的东西,因此这篇文章。在相关的支线任务中,获得无法处理的网址列表也很好,但这不是我主要关心的问题(但如果有人能告诉我如何处理,那就太酷了)。

Collection=[]
def get_url_data(url):

    try:
        r = requests.get(url, timeout=10)
        r.raise_for_status()

    except HTTPError:
        return None

    site = bs4.BeautifulSoup(r.text)
    groups=site.select('div.filters')
    word=url.split("/")[-1]

    B=[]
    for x in groups:
        B.append(word)
        T=[a.get_text() for a in x.select('div.blahblah [class=txt]')]
        A1=[a.get_text() for a in site.select('div.blah [class=txt]')]
        if len(T)==1 and len(A1)>0 and T[0]=='verb' and A1[0]!='as in':
            B.append(T)
            B.append([a.get_text() for a in x.select('div.blahblah [class=ttl]')])
            B.append([a.get_text() for a in x.select('div.blah [class=text]')])
            Collection.append(B)
        B=[]

for url in urllist:
    get_url_data(url)
Run Code Online (Sandbox Code Playgroud)

我认为主要的错误代码是这个,它触发了其他错误,因为有一堆以During handling …

python error-handling web-scraping python-requests

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

如何使用 Selenium 和 VBA 向下滚动网页

我使用 VBA 结合 selenium 编写了一个脚本,从网页中获取所有公司链接,该网页直到滚动到最下方才显示所有链接。但是,当我运行脚本时,我只得到 20 个链接,但总共有 1000 个链接。我听说可以在代码之间执行 javascript 函数来完成此类任务。此时,我不知道如何将其放入我的脚本中。这是我到目前为止所尝试过的:

Sub Testing_scroll()

Dim driver As New WebDriver
Dim posts As Object, post As Object

driver.Start "chrome", "http://fortune.com/fortune500"
driver.get "/list/"

driver.execute_script ("window.scrollTo(0, document.body.scrollHeight);") --It doesn't support here

Set posts = driver.FindElementsByXPath("//li[contains(concat(' ', @class, ' '), ' small-12 ')]")

For Each post In posts
    i = i + 1
    Cells(i, 1) = post.FindElementByXPath(".//a").Attribute("href")
Next post

End Sub
Run Code Online (Sandbox Code Playgroud)

selenium vba web-scraping selenium-webdriver

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

从网页代码中删除广告

我有广告拦截规则列表(示例
如何将它们应用到网页?我使用 MechanicalSoup(基于 BeautifulSoup)下载网页代码。我想将其保存为 bs 格式,但 etree 也可以。
我尝试使用以下代码,但某些页面存在问题:
ValueError: Unicode strings with encoding declaration are not supported. Please use bytes input or XML fragments without declaration.

beautifulsoup adblock web-scraping python-3.x mechanicalsoup

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

如何使用 R 中的 Web 抓取功能提取 USGS 仪表信息

我想提取该网站的一些简单信息:

https://waterdata.usgs.gov/nwis/inventory/?site_no=14091500

我想获取这个网站上的排水面积的值,如下图所示:

在此输入图像描述

由于网站结构知识的复杂性,我不知道如何实现这个意图。

r web-scraping

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

HTMLAgilityPack - 按类获取类中的元素

我希望从下面所示的“listicle-page”类中的H2 (突出显示)元素获取值。目前,代码获取DIV元素中的所有值,而我只需要获取下面的类中包含的H2的值。

考虑以下 HTML:

单击此处查看 HTML

请参阅下面的代码 -

private void getFact()
        {
            HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb();
            HtmlAgilityPack.HtmlDocument doc = web.Load("https://www.rd.com/culture/interesting-facts/");

            var headerNames = doc.DocumentNode.SelectNodes("//div[@class='listicle-page']").ToList();

            foreach(var item in headerNames)
            {
                MessageBox.Show(item.InnerText);
            }
        }
Run Code Online (Sandbox Code Playgroud)

c# xpath web-scraping html-agility-pack

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

从谷歌搜索中提取结果数

我正在编写一个网络抓取工具,以提取出现在搜索结果页面左上角的谷歌搜索中的搜索结果数量。我写了下面的代码,但我不明白为什么phrase_extract 是 None 。我想提取短语“大约 12,010,000,000 个结果”。我在哪一部分犯了错误?可能是 HTML 解析不正确?

import requests
from bs4 import BeautifulSoup

def pyGoogleSearch(word):   
    address='http://www.google.com/#q='
    newword=address+word
    #webbrowser.open(newword)
    page=requests.get(newword)
    soup = BeautifulSoup(page.content, 'html.parser')
    phrase_extract=soup.find(id="resultStats")
    print(phrase_extract)

pyGoogleSearch('world')
Run Code Online (Sandbox Code Playgroud)

例子

python beautifulsoup web-scraping

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

从列表类型中移除所有 {}

大家好,我正在抓取亚马逊网站,我正在获取所有 16 个链接,但想从新生成的列表中删除 {} 部分。提供的输出

from requests_html import HTMLSession

import time

import pandas as pd


s = HTMLSession()


r = s.get("https://www.amazon.in/s?k=oneplus&page=1")

r.html.render(sleep=1)

t= []


Everything = r.html.find("div.s-include-content-margin.s-border-bottom.s-latency-cf-section")


for e in Everything:

links = e.find("a.a-link-normal.a-text-normal")[0].absolute_links

t.append(links)

print("\n",t)
Run Code Online (Sandbox Code Playgroud)

输出

python amazon-web-services web-scraping python-3.x python-requests

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

当网站有文本时,Beautiful Soup 返回一个空字符串

在这里考虑这个网站:https : //dlnr.hawaii.gov/dsp/parks/oahu/ahupuaa-o-kahana-state-park/

我正在寻找右侧标题下的内容。这是我的示例代码,它应该返回内容列表但返回空字符串:

import requests as req
from bs4 import BeautifulSoup as bs

r = req.get('https://dlnr.hawaii.gov/dsp/parks/oahu/ahupuaa-o-kahana-state-park/').text
soup = bs(r)

par = soup.find('h3', text= 'Facilities')

for sib in par.next_siblings:
    print(sib)
Run Code Online (Sandbox Code Playgroud)

这将返回:

<ul class="park_icon">
<div class="clearfix"></div>
</ul>
Run Code Online (Sandbox Code Playgroud)

该网站不显示该类的任何 div 元素。此外,未捕获列表项。

python beautifulsoup web-scraping python-requests

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

使用python解析从Javascript呈现的网页中抓取的数据

我正在尝试使用 .find off of a soup 变量,但是当我访问网页并尝试找到正确的类时,它不返回任何内容。

from bs4 import *
import time
import pandas as pd
import pickle
import html5lib
from requests_html import HTMLSession

s = HTMLSession()
url = "https://cryptoli.st/lists/fixed-supply"


def get_data(url):
    r = s.get(url)
    global soup
    soup = BeautifulSoup(r.text, 'html.parser')
    return soup

def get_next_page(soup):
    page = soup.find('div', {'class': 'dataTables_paginate paging_simple_numbers'})
    return page
    
get_data(url)
print(get_next_page(soup))
Run Code Online (Sandbox Code Playgroud)

“页面”变量返回“无”,即使我从网站元素检查器中提取它。我怀疑这与网站是用 javascript 呈现的事实有关,但不知道为什么。如果我拿走 {'class' : ''datatables_paginate paging_simple_numbers'} 并尝试找到 'div' 然后它会工作并返回第一个 div 标签,所以我不知道还能做什么。

python web-scraping

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