簡體   English   中英

用Beautifulsoup刮痧 - 與顯示的頁面不同的內容

[英]Scraping with Beautifulsoup - contents different from displayed page

我試圖從這個頁面抓取內容,請參閱下面的代碼。 我很好奇,好像我重復運行代碼,我不斷得到一個不同的工作位置列表(因此,評論),即使我瀏覽器中顯示的頁面是相同的。 例如,第一次迭代是正確的,但是第二次使用相同的起始URL運行腳本,位置“大學村”和“遠程遠程工作”從列表中消失(並且“San Salvador”和“Atlanta”進入,以便列表長度相同)。

據我所見,沒有“隱藏”的文字,即。 所有這些應該是可見的(並且在第一次迭代中)。 到底是怎么回事? 我怎樣才能確保抓住所有內容(我需要重復幾千頁,所以我不想手動完成報廢數據)。

這個問題是相關的,但我不認為這是一個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。 對不起,如果這不是發布此問題的正確位置; 讓我知道在這種情況下更合適的地方。

在我看來,它與你的目標url中的 Ajax請求有關,我可以在訪問它時找到一些XHR類型的請求。

對於Ajax相關網站, “用戶看到的內容,爬蟲看到的內容”是完全不同的。 urllib或者請求只會在第一次加載頁面時訪問數據,而某些內容可能會丟失。

如果你想用Ajax請求抓取一個網站,我建議使用基於PhantomJS的 CasperJS ,它嘲笑人們訪問網站的內容,並等到你需要加載的所有數據做進一步的工作,它也與python有關,請點擊這里 :)

======更新======

我添加另一個鏈接scraping-with-python-selenium-and-phantomjs ,它與phantomjs和beautifulsoup一起相關,並且可能對某些情況有用。

暫無
暫無

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

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