簡體   English   中英

如何修復由python中的正則表達式引發的此類型錯誤?

[英]How to fix this type error thrown by regular expression in python?

我正在嘗試為Python收集請求庫的所有內部鏈接,並過濾掉所有外部鏈接。

我正在使用正則表達式執行相同的操作。 但是它引發了我無法解決的此類型錯誤。

我的代碼:

import requests
from bs4 import BeautifulSoup
import re

r = requests.get('https://2.python-requests.org/en/master/')
content = BeautifulSoup(r.text)
[i['href'] for i in content.find_all('a') if not re.match("http", i)]

錯誤:

TypeError                                 Traceback (most recent call last)
<ipython-input-10-b7d82067fe9c> in <module>
----> 1 [i['href'] for i in content.find_all('a') if not re.match("http", i)]

<ipython-input-10-b7d82067fe9c> in <listcomp>(.0)
----> 1 [i['href'] for i in content.find_all('a') if not re.match("http", i)]

~\Anaconda3\lib\re.py in match(pattern, string, flags)
    171     """Try to apply the pattern at the start of the string, returning
    172     a Match object, or None if no match was found."""
--> 173     return _compile(pattern, flags).match(string)
    174 
    175 def fullmatch(pattern, string, flags=0):

TypeError: expected string or bytes-like object

您正在向它傳遞BeautifulSoup節點對象,而不是字符串。 嘗試這個:

[i['href'] for i in content.find_all('a') if not re.match("http", i['href'])]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM