this page에서 내용을 긁어 내려고합니다. 아래 코드를 참조하십시오. 궁금한 점이 있지만, 코드를 반복적으로 실행하는 것처럼 내 브라우저에 표시된 페이지가 동일하더라도 작업 위치의 다른 목록 (따라서 리뷰)을 계속 유지합니다. 예. 첫 번째 반복은 정확하지만 같은 시작 URL로 두 번째 스크립트를 실행하면 "University Village"및 "Remote Telework"위치가 목록에서 사라집니다 ("San Salvador"및 "Atlanta"enter)하여 목록 길이가 같음).Beautifulsoup로 스크래핑 - 표시된 페이지와 다른 내용
내가 볼 수있는 한 '숨겨진'텍스트는 없습니다. 이 모든 것이 가시적이어야하며 (첫 번째 반복에서) 무슨 일 이니? 어떻게하면 모든 내용을 가져올 수 있는지 확인할 수 있습니까 (몇 천 페이지 반복해야하므로 수동으로 폐기 된 데이터를 검토하고 싶지는 않습니다).
This question과 관련되어 있지만 여기서는 IP 문제라고 생각하지 않습니다. 첫 번째 반복에서 표시된 콘텐츠를 얻을 수 있기 때문입니다.
덧붙여 편집 : 추가 된 코드는 코드가 실제로 인식 한 코드와 똑같은 코드를 실제로 건너 뜁니다.
list_url= ["http://www.indeed.com/cmp/Microsoft/reviews?fcountry=ALL"]
for url in list_url:
base_url_parts = urllib.parse.urlparse(url)
while True:
raw_html = urllib.request.urlopen(url).read()
soup = BeautifulSoup(raw_html,"lxml")
review_tag={'class':re.compile("cmp-review-container")}
reviews=soup.find_all(attrs=review_tag)
job_locations=[]
for r in reviews:
if r.find(attrs={'class':"cmp-reviewer-job-location"}) != None:
job_location=r.find(attrs={'class':"cmp-reviewer-job-location"}).get_text().strip().encode('utf-8')
else:
job_location = "."
job_locations.append(job_location)
#Zip the data and write the observations to the CSV file
try:
last_link = soup.find('div', id='company_reviews_pagination').find_all('a')[-1]
if last_link.text.startswith('Next'):
next_url_parts = urllib.parse.urlparse(last_link['href'])
url = urllib.parse.urlunparse((base_url_parts.scheme, base_url_parts.netloc,
next_url_parts.path, next_url_parts.params, next_url_parts.query,
next_url_parts.fragment))
print(url)
else:
break
except:
break
csvfile.close()
PS : 여기
코드 (단순화 된)이다. 이 질문을 올릴 수있는 적절한 장소가 아니면 죄송합니다. 이 경우 더 적절한 장소를 알려주십시오.
감사합니다. CasperJS를 사용하여 url을 열고 읽을 수있는 방법이 있습니까? 아직 처리 부분을 아름답게 유지하고 있습니까? 또는 ghost.py (코드의 주요 부분을 변경하지 않은 상태로 유지)를 사용하면 동일한 결과가 나타 납니까? 나는 초심자이고, 처음부터 끝내고있다, 음, 위협적인가? :) –
안녕하세요 anne_t, 내 생각에 bs와 casperjs를 함께 사용하는 일반적인 방법은 Popen과 같은 단일 프로세스를 사용하여 py 내부에서 casperjs 스크립트를 호출하고 bs를 사용하여 casperjs에서 다운로드 한 html을 처리하는 것입니다. 게다가, 나는 나의 대답을 편집하고 PhantomJS와 BS와 함께 링크를 포함한다. 나는 ghost.py 부분에 대해 확신하지 못했습니다. 전에 처리하지 않았습니다. – linpingta
고마워요! 나는 확실히 그것을 찾을거야! –