2017-12-19 5 views
2

우선 나는 프로그래밍의 총 초보자이고 나의 영어는 최고가 아니다.Webscraping phonenumbers

Windows 10 Pro에서 Python 3.6을 사용하고 있습니다.

일부 시행 착오 끝에 마침내 lxml을 통해 웹 페이지의 데이터를 스크랩하는 방법과 beautifulsoup 및 CSV를 사용하여 엑셀 시트에 추가하는 방법을 알아 냈습니다.

지금까지 저를 위해 작동합니다. 이름, 주소 및 거리의 목록을 수집하는 것은 꽤 쉬웠습니다. 하지만 전화 번호와 이메일을 추출하려고 할 때 문제가 생겼습니다. 몇 가지 조사를 한 후에 나는 그들이 전화 번호를 분할하고 그것을 다소 암호화했다고 알았습니다. 이메일 또한 다소 까다 롭습니다.

전에서 데이터를 추출 할 웹 페이지입니다 : 그들은 여기에 나머지를 가리는

<span class="nummer">(02271) 6 79</span> 

: https://www.gelbeseiten.de/schluesselfertigbau/bergheim,,,,,umkreis-50000

내가 여기에 PHONENUMBER의 첫 번째 부분이 있음을 발견

<span class="suffix encode_me telSelector128028047679_2623072" data-telselector="telSelector128028047679_2623072" data-telsuffix="IDcw"> 70</span> 

심지어 첫 번째 부분은 쉽게 보이지만, 나는 그것을 추출하는 데 익숙한 lxml을 사용할 수 없습니다.

제 질문은 아직 초보자가 전화 번호와 이메일을 추출 할 수 있다면 어떨까요?

아니면 인쇄용 PDF 파일에서 해당 번호를 찾으려고해야합니까? 솔루션 아래

+2

나는 당신의 질문을 이해하기 위해 사투를 벌인거야. HTML 속성에서 숫자를 추출 할 수 있는지 묻는 중입니까? 확실한. 시도해 보시고 실패한 것을 우리에게 보여주십시오 - 우리는 기꺼이 도와 드리겠습니다! – Pavel

+0

이것을 아주 명확하게하기 위해서 전체 전화 번호는'(02271) 6 79 70'이어야합니까? –

+0

@ M.T. 예. thats 내가 필요로하는 thats – DanielHe

답변

1

봅니다 전화 번호를 얻을 수 있습니다 :

import requests 
from lxml import html 

source = html.fromstring(requests.get("https://www.gelbeseiten.de/schluesselfertigbau/bergheim,,,,,umkreis-50000").text) 
phone_number = "".join([text_node for text_node in source.xpath('//li[@class="phone"]//text()') if text_node.strip()]) 
print(phone_number) 

출력 :

'(02271) 6 79 70' 
+1

또는 'text_content' : source.xpath ('// li [@ class = "phone"] ') [0] .text_content(). 스트립()'. – alecxe

+0

Yeap, 나는 이것을 시도했지만,''(02271) 6 79 \ n \ t \ t \ t \ t 70 ''을 얻었다. 요청을하지만, HTML 샘플 브라우저에서 도구를 복사 한 ... – Andersson

+0

그 빠른 응답을 주셔서 감사합니다. 하지만 내 결과는 약간 다르게 보입니다. "(02271) 6 79 (02181) 27 0 (02161) 24 19 (02131) 66 67 (02103) 39 00 (02173) 2 04 7 (02235) 9 23 04 (02232) 4 23 (0157) 86 85 74 (02181) 2 78 11 (02181) 47 49 0 (02202) 1 88 (0211) 23 80 (02235) 9 23 0 "어떻게 그들을리스트에 넣을 수 있습니까? 접미사 (예 : 70)가 누락 된 이유는 무엇입니까? – DanielHe

관련 문제