python - 在网站中抓取关于我们的引用时没有结果
问题描述
我有一个网址列表,我想看看那里是否有一个名为“关于我们”或联系方式的部分。
我的方法如下(我如何确保我在特定网站的关于我们页面上):
import requests
from bs4 import BeautifulSoup as soup
url = ["https://www.stackoverflow.com", "http://grandeinganno.it", "https://towardsdatascience.com"]
for u in url:
response = requests.get(u)
page = str(BeautifulSoup(response.content))
def getURL(page):
start_link = page.find("a href")
if start_link == -1:
return None, 0
start_quote = page.find('"', start_link)
end_quote = page.find('"', start_quote + 1)
url = page[start_quote + 1: end_quote]
return url, end_quote
while True:
url, n = getURL(page)
page = page[n:]
if url:
print (url)
else:
break
以下代码检查属性内的“about”和元素href
的文本:a
def about_links(elm):
return elm.name == "a" and ("about" in elm["href"].lower() or \
"about" in elm.get_text().lower())
soup.find_all(about_links)
不幸的是,即使我使用该问题的代码和建议,当我开始在“关于我们'来自网站。
如何确定错误在哪里?
解决方案
该脚本将检查页面内是否存在<a>
包含“关于”或“联系我们”的标签。如果是,返回True
:
import requests
from bs4 import BeautifulSoup
urls = ["https://www.stackoverflow.com", "http://grandeinganno.it", "https://towardsdatascience.com"]
def check(url):
soup = BeautifulSoup(requests.get(url).content, 'html.parser')
# check if there exists <a> tag with "about" or "contact us"
tag = soup.find(lambda t: t.name=='a' and 'about' in t.text.lower() or 'contact us' in t.text.lower())
return bool(tag)
for url in urls:
print('{:<30} {}'.format(url, check(url)))
印刷:
https://www.stackoverflow.com True
http://grandeinganno.it False
https://towardsdatascience.com True
推荐阅读
- jenkins - 在 Jenkins 中创建屏蔽密码的 Groovy 脚本
- c - 如果从标准输入读取,刷新标准输出似乎没有效果
- arrays - 在 Shopify 液体框架中动态填充 forloop 数组
- bigdata - s3 数据湖如何处理数据库更新的行?
- powershell - 在新窗口中打开powershell核心的正确方法是什么?
- r - 计数图的 geom_bar:为没有值的列添加 x 轴标签并自定义剩余条的顺序
- javascript - CodeMirror - 在使用 for...in 遍历数组时使用 replaceRange 时“无法读取未定义的属性 'chunkSize'”
- c# - 连接数据库 Microsoft SQL 服务器时出错
- swift - swift AVAudioEngine 将多声道非交错信号转换为单声道
- sql - 原始 Sql 语句按列分组,具有相同名称的不同字符串