python - Python网页抓取,如果出现错误,请跳过网址

标签 python error-handling web-scraping python-requests

我正在尝试抓取一个站点(大约7000个链接,全部在列表中),由于我的方法,这花费了很长的时间,我想我对此表示满意(因为这意味着不要被发现)。但是,如果在尝试检索页面时遇到任何错误,我可以跳过它吗?现在,如果有错误,代码会中断并给我很多错误消息。这是我的代码:
Collection是列表和结果文件的列表。基本上,我正在尝试使用get_url_data()(我有一个之前的问题要感谢)和我所有的url来运行循环。我有一个叫做urllist的东西,但似乎并不能解决所有错误,因此本文发布了。在一个相关的附带问题中,获得无法处理的URL列表也将是一件很不错的事,但这不是我的主要担心(但如果有人可以向我展示方法,那将很酷)。

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)

我认为主要的错误代码是此代码,它触发了其他错误代码,因为从HTTPError开头存在很多错误。
Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 319, in _make_request
    httplib_response = conn.getresponse(buffering=True)
TypeError: getresponse() got an unexpected keyword argument 'buffering'

最佳答案

您可以使try-catch块如下所示,

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

except Exception:
    return
Exception类将处理所有错误和异常。

如果要获取异常消息,可以在except块中打印此消息。然后,您必须先实例化异常,然后再引发它。
except Exception as e:
    print(e.message)
    return

关于python - Python网页抓取,如果出现错误,请跳过网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25320022/

相关文章:

if-statement - 您如何编写方法的错误检查部分以使其可读并易于出错?

php - 使用 Eval 函数时无法捕获异常

python - 如何从 HTML 文件中的某一行开始抓取数据

python - 使用Python登录网站

R-自动化网页文本抓取

python - 为什么 print() 会在输出中添加额外的空格?

javascript - 在用户输入的 Bokeh 中隐藏绘图 - 自定义 JS?

error-handling - ML。错误: operator and operand don't agree [tycon mismatch]

python - 为 View 可调用项设置 sqlalchemy 连接的推荐方法是什么?

python - Renpy 和请求