this pageのコンテンツを掻き取ろうとしています。下のコードを参照してください。しかし、コードを繰り返し実行するかのように、ブラウザの表示ページが同じであっても、私は職場の別のリスト(したがって、レビュー)を取得し続けます。 など。最初の反復は正しいですが、同じ開始URLを使用してスクリプトを2回実行すると、「University Village」と「Remote Telework」の場所がリストから消えます(「San Salvador」と「Atlanta」は入力するのでリスト同じ長さである)。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のような単一のプロセスを使用してcasperjsスクリプトをpy内で呼び出し、bsを使用してcasperjsによってダウンロードされたhtmlを処理することです。また、私は自分の答えを編集し、PhantomJSとbsとのリンクを組み込んでいます。私はghost.pyの部分についてはわかりません、私は前にそれを扱っていませんでした:) – linpingta
ありがとう!私は間違いなくそれを探します! –