Pythonを使用したGoogleScrapeの結果の数が間違っています

マルコ・ナヴォーネ

私はウェブスクレイピングを学ぼうとしていて、奇妙な問題に直面しています...私の仕事は、特定の日付範囲のトピックに関するニュースをGoogleで検索し、結果の数を数えることです。

私の簡単なコードは

import requests,  bs4

payload = {'as_epq': 'James Clark', 'tbs':'cdr:1,cd_min:1/01/2015,cd_max:1/01/2015','tbm':'nws'}    
r = requests.get("https://www.google.com/search", params=payload)

soup = bs4.BeautifulSoup(r.text)
elems = soup.select('#resultStats')
print(elems[0].getText())

そして私が得る結果は

About 8,600 results

結果が間違っているという事実を除けば、明らかにすべてが機能します。FirefoxでURLを開くと(r.urlで完全なURLを取得できます)

https://www.google.com/search?tbm=nws&as_epq=James+Clark&tbs=cdr%3A1%2Ccd_min%3A1%2F01%2F2015%2Ccd_max%3A1%2F01%2F2015

結果は実際には2つしかないことがわかります。手動でHTMLファイルをダウンロードし、ページソースを開いて、id = "resultStats"を検索すると、結果の数は実際に2つであることがわかります。

保存されたHTMLファイルとスープアイテムで同じidタグを検索すると、2つの異なる数値結果が得られる理由を誰かが理解するのを手伝ってもらえますか?

**************更新問題は、requests.getによって正しく処理されないカスタム日付範囲にあるようです。セレン同じURLを使用すると、正しい答えが得られます

from selenium import webdriver
driver = webdriver.Firefox()
driver.get(url)
content = driver.page_source
soup = bs4.BeautifulSoup(content)
elems = soup.select('#resultStats')
print(elems[0].getText())

そして答えは

2 results (0.09 seconds) 

問題は、Firefoxでページを開く必要があるため、この方法がより面倒に見えることです...

Vikas Ojha

この問題を引き起こしていることがいくつかあります。まず、日付の日と月の部分を2桁で表示する必要があります。また、一般的なブラウザのユーザーエージェント文字列も必要です。次のコードが機能するはずです。

import requests,  bs4

headers = {
    "User-Agent":
        "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36"
}
payload = {'as_epq': 'James Clark', 'tbs':'cdr:1,cd_min:01/01/2015,cd_max:01/01/2015', 'tbm':'nws'}
r = requests.get("https://www.google.com/search", params=payload, headers=headers)

soup = bs4.BeautifulSoup(r.content, 'html5lib')
print soup.find(id='resultStats').text

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Valgrindを使用したlongdoubleのstd :: fpclassifyの結果が間違っています

分類Dev

phpでxpathを使用すると、結果の数が間違っています

分類Dev

PythonのLinearRegressionが間違った結果を出しますか?

分類Dev

eulerProjectの関数の結果が間違っています

分類Dev

Oracleの "order by"句は、結果を間違った順序で返すか、結果が欠落しています

分類Dev

AES New InstructionSetを使用した復号化の結果が間違っています

分類Dev

usort関数の結果が間違っています

分類Dev

ElasticsearchMatchQueryが間違った結果を返しています

分類Dev

Pythonのreplace関数は間違った結果をもたらします

分類Dev

Python math.arctan()の結果が間違っていますか?

分類Dev

Pythonでガウス関数のフーリエ変換をプロットしましたが、結果は間違っていました

分類Dev

jqueryを使用してボタンの高さを特定すると、間違った結果が得られます

分類Dev

Cのプログラムが間違った結果を示しています、奇数

分類Dev

Cのプログラムが間違った結果を示しています、奇数

分類Dev

MySQLの結合が間違っています結果

分類Dev

PythonのBankAccount、間違った結果が得られました

分類Dev

Python XMLfindallが間違ったものを返しています

分類Dev

Pythonの条件が間違った結果をもたらす

分類Dev

合計を使用して関数をプロットすると、間違った結果が生成されます

分類Dev

setIntervalによる関数の結果が間違っています

分類Dev

WindowsのJulia(0.6.2)から呼び出されたFortran関数の結果が間違っています

分類Dev

正多角形の面積を計算できません-正接式を使用した結果が間違っています

分類Dev

挿入のトリガーが間違った結果を出している

分類Dev

CommonsChunkPluginを使用したWebpackの結果、htmlファイルのバンドル順序が間違っています

分類Dev

MDX結果の合計が間違っています

分類Dev

ElasticSearch結果のスコアが間違っています

分類Dev

dimplejs散布図の結果が間違っています

分類Dev

Application.Sumの結果が間違っています

分類Dev

NSDateFormatter dateFromStringの結果が間違っていますか?

Related 関連記事

  1. 1

    Valgrindを使用したlongdoubleのstd :: fpclassifyの結果が間違っています

  2. 2

    phpでxpathを使用すると、結果の数が間違っています

  3. 3

    PythonのLinearRegressionが間違った結果を出しますか?

  4. 4

    eulerProjectの関数の結果が間違っています

  5. 5

    Oracleの "order by"句は、結果を間違った順序で返すか、結果が欠落しています

  6. 6

    AES New InstructionSetを使用した復号化の結果が間違っています

  7. 7

    usort関数の結果が間違っています

  8. 8

    ElasticsearchMatchQueryが間違った結果を返しています

  9. 9

    Pythonのreplace関数は間違った結果をもたらします

  10. 10

    Python math.arctan()の結果が間違っていますか?

  11. 11

    Pythonでガウス関数のフーリエ変換をプロットしましたが、結果は間違っていました

  12. 12

    jqueryを使用してボタンの高さを特定すると、間違った結果が得られます

  13. 13

    Cのプログラムが間違った結果を示しています、奇数

  14. 14

    Cのプログラムが間違った結果を示しています、奇数

  15. 15

    MySQLの結合が間違っています結果

  16. 16

    PythonのBankAccount、間違った結果が得られました

  17. 17

    Python XMLfindallが間違ったものを返しています

  18. 18

    Pythonの条件が間違った結果をもたらす

  19. 19

    合計を使用して関数をプロットすると、間違った結果が生成されます

  20. 20

    setIntervalによる関数の結果が間違っています

  21. 21

    WindowsのJulia(0.6.2)から呼び出されたFortran関数の結果が間違っています

  22. 22

    正多角形の面積を計算できません-正接式を使用した結果が間違っています

  23. 23

    挿入のトリガーが間違った結果を出している

  24. 24

    CommonsChunkPluginを使用したWebpackの結果、htmlファイルのバンドル順序が間違っています

  25. 25

    MDX結果の合計が間違っています

  26. 26

    ElasticSearch結果のスコアが間違っています

  27. 27

    dimplejs散布図の結果が間違っています

  28. 28

    Application.Sumの結果が間違っています

  29. 29

    NSDateFormatter dateFromStringの結果が間違っていますか?

ホットタグ

アーカイブ