我有两个简单的python脚本,可从URL刮取标题,主图像,描述。一种使用提取,另一种使用BeautifulSoup4。两者都适用于大多数网址(例如http://nytimes.com)。但是在这两种情况下,都有一些无法使用的网址:http://latimes.com这很奇怪,因为它是如此大的站点。我制作了两个不同的脚本,以确认问题并非来自库。
我想念的是什么?有人可以帮我弄清楚为什么我什么也得不到吗?
脚本号1:
import extraction, requests
ext = extraction.Extractor()
print('Enter url:')
url = input()
x = ext.extract(requests.get(url).text, source_url=url)
print(x.title)
print(x.url)
print(x.description)
脚本号的结果1:
脚本号2:
from bs4 import BeautifulSoup
import requests
print('Enter url:')
url = input()
source = requests.get(url).text
soup = BeautifulSoup(source, 'lxml')
title = soup.find("meta", property="og:title")["content"]
typeof = soup.find("meta", property="og:type")["content"]
image = soup.find("meta", property="og:image")["content"]
url = soup.find("meta", property="og:url")["content"]
summary = soup.find("meta", property="og:description")["content"]
print(title)
print(typeof)
print(image)
print(url)
print(summary)
错误包含大量信息,但是您必须花一点时间才能正确解释它们。
脚本1:无法满足请求。嗯,请求出了点问题。试试:
import extraction
import requests
ext = extraction.Extractor()
print('Enter url:')
url = input()
r = requests.get(url)
if r.status_code != 200: # check if request is _not_ OK
print(f"Error {r.status_code} when requesting {url}!")
return
x = ext.extract(, source_url=url)
print(x.title)
print(x.url)
print(x.description)
与脚本2相同的问题。如果soup.find("meta", property="og:title")
显然返回None
,则[]
项会出错。因此,返回并打印soup
,以查看脚本是否仍然可以。