一部の関数は、なしではなく間違った結果を返します

MITHU

2つの関数から2つのフィールドのみを出力しようとしています。両方の関数は同じURLを取りますが、異なる結果を生成します。最初の関数get_names()は、さまざまなユーザーの名前を出力します。2番目の関数get_badges()は、関係するユーザーに接続されているバッジの数を生成します。バッジの数は必ずしもすべてのユーザーに存在するとは限らzip_longest()ないため、バッジを持っていないユーザーがいる場合に関数が印刷されるように使用しましNoneただし、問題はget_badges()、バッジを持っていないユーザーに遭遇すると、関数が間違った結果をもたらすことです。

私は試しました:

import requests
from bs4 import BeautifulSoup
from itertools import zip_longest

url = 'https://stackoverflow.com/questions/tagged/web-scraping'

def get_names(link):
    res = requests.get(link)
    soup = BeautifulSoup(res.text,"lxml")
    for item in soup.select(".user-details > a"):
        yield item.text

def get_badges(link):
    res = requests.get(link)
    soup = BeautifulSoup(res.text,"lxml")
    for item in soup.select(".badgecount"):
        yield item.text

if __name__ == '__main__':
    for elem in zip_longest(get_names(url),get_badges(url)):
        print(elem)

2つの関数で正確な結果を生成するにはどうすればよいですか?

  • 注:異なるIDに対して異なる結果(相関)を生成する2つのAPIを使用しています。これらのAPIで行っているのと同じロジックを模倣しようとしました。
アンドレイ・ケセリー

上述したように、あなたは結果から、「接続している」ことを何か必要get_names()としますget_badges()あなたのコードには、そのようなものはありません-そのため、結果はzipで不一致になります。

このコードで.user-detailsは、2つの関数間の共通要素としてCSSセレクターを使用しています。コードでは、ユーザー名やユーザーIDなどの形式で共通の要素を持ち、各関数から辞書/タプルを返すことができます。

import requests
from bs4 import BeautifulSoup

url = 'https://stackoverflow.com/questions/tagged/web-scraping'

def get_names(soup):
    for item in soup.select(".user-details > a"):
        yield item.text

def get_badges(soup):
    for item in soup.select(".user-details"):
        gold = item.select_one('.badge1 + .badgecount')
        silver = item.select_one('.badge2 + .badgecount')
        bronze = item.select_one('.badge3 + .badgecount')

        yield [int(gold.text) if gold else 0,
               int(silver.text) if silver else 0,
               int(bronze.text) if bronze else 0]

if __name__ == '__main__':

    res = requests.get(url)
    soup = BeautifulSoup(res.text,"lxml")

    print('{: <30}{: >5}{: >5}{: >5}'.format('Name', 'G', 'S', 'B'))
    print('-' * 45)
    for name, badges in zip(get_names(soup), get_badges(soup)):
        print('{: <30}{}'.format(name, ''.join('{: >5}'.format(b) for b in badges)))

プリント:

Name                              G    S    B
---------------------------------------------
Arkadi w                          0    0    7
MITHU                             0    4   18
Mohamed Suhail Irfan Khazi        0    0    2
Kevin Walsh                       0    0    2
lowpeasant                        0    0    0
vivekh99                          0    0    2
Nico Gandolfo                     0    0    1
Sam Edeus                         0    0    2
Tab Key                           0    0    7
Ion Aag                           0    0    5

... and so on.

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Android Studioは、単純な数式の間違った結果を返します

分類Dev

CHARINDEXは、とげを検索すると、一部のCOLLATIONで誤った結果を返します(文字254)

分類Dev

この階乗関数が間違った結果を返すのはなぜですか?

分類Dev

php max()関数は間違った結果を出します

分類Dev

中間結果を保存しないと、Eigenは間違った結果を返します

分類Dev

都市名が特定の国の名前と等しい場合(だけでなく)、CLGeocoderは間違った結果を返します

分類Dev

DATEのOracleSQL比較は間違った結果を返します

分類Dev

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

分類Dev

SQL Like with wildcardは、特定の文字で間違った結果を返します

分類Dev

uniqueNは、jの条件で間違った結果を返します

分類Dev

SUM(DISTINCT(column))は、特定の条件で間違った結果を返します

分類Dev

私のカスタム関数は、Pythonでコンパイルされた文字列ではなく、間違ったものを返します

分類Dev

Vlookupはシートの下部近くで間違った結果を返します

分類Dev

finfo_file()は、一部の画像に対して間違ったmimeタイプを返しますか?

分類Dev

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

分類Dev

PythonNetCDF4は結果の一部を返します

分類Dev

File.isFileは()間違った結果を返しますか?

分類Dev

listviewonClickは間違った結果を返します

分類Dev

集計+平均は間違った結果を返します

分類Dev

クエリが間違った結果を返すのはなぜですか?

分類Dev

If条件が間違った結果を返すのはなぜですか?

分類Dev

Scipy stdDevが間違った結果を返すのはなぜですか?

分類Dev

統計が間違った結果を返すのはなぜですか?

分類Dev

Google SheetsVALUE関数は間違った結果をもたらします

分類Dev

<>またはNOTIN、およびクエリが間違った結果を返すのはなぜですか

分類Dev

webpackは、一部の関数ではなくすべてのコードをインポートします

分類Dev

符号なし整数dtypeのマスクされた配列のnp.ma.argmaxは、numpy1.11.0で間違った結果を返します

分類Dev

PythonとRは、まったく同じであるはずの異なる結果を返しています

分類Dev

Series.indexとSeries.key()の主な違いは何ですか?それらはまったく同じ結果を返します

Related 関連記事

  1. 1

    Android Studioは、単純な数式の間違った結果を返します

  2. 2

    CHARINDEXは、とげを検索すると、一部のCOLLATIONで誤った結果を返します(文字254)

  3. 3

    この階乗関数が間違った結果を返すのはなぜですか?

  4. 4

    php max()関数は間違った結果を出します

  5. 5

    中間結果を保存しないと、Eigenは間違った結果を返します

  6. 6

    都市名が特定の国の名前と等しい場合(だけでなく)、CLGeocoderは間違った結果を返します

  7. 7

    DATEのOracleSQL比較は間違った結果を返します

  8. 8

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

  9. 9

    SQL Like with wildcardは、特定の文字で間違った結果を返します

  10. 10

    uniqueNは、jの条件で間違った結果を返します

  11. 11

    SUM(DISTINCT(column))は、特定の条件で間違った結果を返します

  12. 12

    私のカスタム関数は、Pythonでコンパイルされた文字列ではなく、間違ったものを返します

  13. 13

    Vlookupはシートの下部近くで間違った結果を返します

  14. 14

    finfo_file()は、一部の画像に対して間違ったmimeタイプを返しますか?

  15. 15

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

  16. 16

    PythonNetCDF4は結果の一部を返します

  17. 17

    File.isFileは()間違った結果を返しますか?

  18. 18

    listviewonClickは間違った結果を返します

  19. 19

    集計+平均は間違った結果を返します

  20. 20

    クエリが間違った結果を返すのはなぜですか?

  21. 21

    If条件が間違った結果を返すのはなぜですか?

  22. 22

    Scipy stdDevが間違った結果を返すのはなぜですか?

  23. 23

    統計が間違った結果を返すのはなぜですか?

  24. 24

    Google SheetsVALUE関数は間違った結果をもたらします

  25. 25

    <>またはNOTIN、およびクエリが間違った結果を返すのはなぜですか

  26. 26

    webpackは、一部の関数ではなくすべてのコードをインポートします

  27. 27

    符号なし整数dtypeのマスクされた配列のnp.ma.argmaxは、numpy1.11.0で間違った結果を返します

  28. 28

    PythonとRは、まったく同じであるはずの異なる結果を返しています

  29. 29

    Series.indexとSeries.key()の主な違いは何ですか?それらはまったく同じ結果を返します

ホットタグ

アーカイブ