<a href="http://www.utoronto.ca/gdrs/" title="Rehabilitation Science"> Rehabilitation Science</a>
Run Code Online (Sandbox Code Playgroud)
对于上面的例子,我想同时获取部门名称“康复科学”及其主页网址“http://www.utoronto.ca/gdrs/”。
有人可以建议一些可以为我完成这项工作的智能正则表达式吗?
我正在尝试抓取一个网站(大约 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 …
我使用 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) 我有广告拦截规则列表(示例)
如何将它们应用到网页?我使用 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
我想提取该网站的一些简单信息:
https://waterdata.usgs.gov/nwis/inventory/?site_no=14091500
我想获取这个网站上的排水面积的值,如下图所示:
由于网站结构知识的复杂性,我不知道如何实现这个意图。
我希望从下面所示的“listicle-page”类中的H2 (突出显示)元素获取值。目前,代码获取DIV元素中的所有值,而我只需要获取下面的类中包含的H2的值。
考虑以下 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) 我正在编写一个网络抓取工具,以提取出现在搜索结果页面左上角的谷歌搜索中的搜索结果数量。我写了下面的代码,但我不明白为什么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)

大家好,我正在抓取亚马逊网站,我正在获取所有 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
在这里考虑这个网站: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 元素。此外,未捕获列表项。
我正在尝试使用 .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 标签,所以我不知道还能做什么。