내가 여기에, 웹 페이지에서 이메일을 추출하기 위해 노력하고있어 내 이메일 그래버 기능입니다 :InvalidSchema : 없음 연결 어댑터를 찾을 수 없습니다 python3.5.2
def emlgrb(x):
email_set = set()
for url in x:
try:
response = requests.get(url)
soup = bs.BeautifulSoup(response.text, "lxml")
emails = set(re.findall(r"[a-z0-9\.\-+_][email protected][a-z0-9\.\-+_]+\.[a-z]+", soup.text, re.I))
email_set.update(emails)
except (requests.exceptions.MissingSchema, requests.exceptions.ConnectionError):
continue
return email_set
이 기능은 다른 기능에 의해 공급되어야하는 생성 url의 목록. 피더 함수 :
def handle_local_links(url, link):
if link.startswith("/"):
return "".join([url, link])
return link
def get_links(url):
try:
response = requests.get(url, timeout=5)
soup = bs.BeautifulSoup(response.text, "lxml")
body = soup.body
links = [link.get("href") for link in body.find_all("a")]
links = [handle_local_links(url, link) for link in links]
links = [str(link.encode("ascii")) for link in links]
return links
제기 된 경우 빈 목록 (중요하지 않음)을 반환하는 많은 예외가 계속됩니다. 그러나 get_links에서 값을 반환()과 같이 : 물론
["b'https://pythonprogramming.net/parsememcparseface//'"]
이 목록에있는 많은 링크가 (그것을 게시 할 수 없습니다 - 명성). 내가 수동으로 B와 중복 따옴표를 제거하지만 경우 : (연결 어댑터를 찾을 수 없습니다 InvalidSchema) - 그래서 목록은 다음과 같습니다 emlgrb() 함수는 목록을 처리 할 수 없습니다
['https://pythonprogramming.net/parsememcparseface//']
emlgrb는() 작동합니다. 문제가 있거나 처음부터 두 번째 목록을 가져 오는 "정리 기능"을 만드는 방법에 대한 제안은 환영합니다.
감사
.encode ('ascii')를 삭제하면 어떻게 출력됩니까? –
실제로, 잘 작동합니다 - 고마워요. – scagbackbone
str()에서 인코딩을 지정할 수도 있다고 생각합니까? 필요한 경우;) –