특이한 테이블로 선거 웹 사이트에서 데이터를 스크랩하는 방법

보다

선거 웹 사이트에서 일부 데이터를 긁어 내려고하는데 BeautifulSoup을 사용하여이 데이터를 가져 오는 방법을 알 수 없습니다.

텍사스 선거 결과 https://results.texas-election.com/contestdetails?officeID=1001&officeName=PRESIDENT%2FVICE-PRESIDENT&officeType=FEDERAL%20OFFICES&from=race

내가 시도한 코드

import pandas as pd
from bs4 import BeautifulSoup

tx_url = 'https://results.texas-election.com/contestdetails?officeID=1001&officeName=PRESIDENT%2FVICE-PRESIDENT&officeType=FEDERAL%20OFFICES&from=race'


import urllib.request
local_filename, headers = urllib.request.urlretrieve(tx_url)

urllib.error.HTTPError : HTTP 오류 403 : 금지됨

soup = BeautifulSoup(tx_url)

/home/server/pi/homes/woodilla/.conda/envs/baseDS_env/lib/python3.7/site-packages/bs4/ init .py : 357 : UserWarning : "https://results.texas-election.com / contestdetails? officeID = 1001 & officeName = PRESIDENT % 2FVICE-PRESIDENT & officeType = FEDERAL % 20OFFICES & from = race "는 URL처럼 보입니다. 뷰티플 수프는 HTTP 클라이언트가 아닙니다. URL 뒤에서 문서를 가져오고 해당 문서를 Beautiful Soup에 공급하려면 요청과 같은 HTTP 클라이언트를 사용해야합니다. 그 문서를 뷰티플 스프에. Decoded_markup 비율

표는 다음과 같습니다.

여기에 이미지 설명 입력

바두 커

우선, 표시되는 오류는 BeautifulSoup잘못 사용하고 있음을 의미합니다 .

다음 BeautifulSoup과 같이 HTTP 클라이언트에서 응답을 전달해야합니다 .

import requests
from bs4 import BeautifulSoup

url = "https://results.texas-election.com/races"

headers = {
    "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36",
}

response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")

둘째, 당신은 하지 않습니다 필요가 BeautifulSoup해당 페이지를 긁어. 모든 것이 JSON. 예를 들면 :

import requests

url = "https://results.texas-election.com/static/data/election/44146/246/Federal.json"

headers = {
    "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36",
}
response = requests.get(url, headers=headers).json()

for race in response["Races"]:
    print(f"Results for {race['N']}")
    for candidate in race["Candidates"]:
        print(f"{candidate['N']} - {candidate['P']}: Votes {candidate['V']} - {candidate['PE']}%")
    print(f"Total votes: {race['T']}")
    print("-" * 80)

산출:

RESIDENT/VICE-PRESIDENT
ROQUE "ROCKY" DE LA FUENTE GUERRA - REP: Votes 7563 - 0.37%
BOB ELY - REP: Votes 3582 - 0.18%
ZOLTAN G. ISTVAN - REP: Votes 1447 - 0.07%
MATTHEW JOHN MATERN - REP: Votes 3512 - 0.17%
DONALD J. TRUMP (I) - REP: Votes 1898664 - 94.13%
JOE WALSH - REP: Votes 14772 - 0.73%
BILL WELD - REP: Votes 15824 - 0.78%
UNCOMMITTED - REP: Votes 71803 - 3.56%
Total votes: 2017167
--------------------------------------------------------------------------------
U. S.  SENATOR
VIRGIL BIERSCHWALE - REP: Votes 20494 - 1.06%
JOHN ANTHONY CASTRO - REP: Votes 86916 - 4.49%
JOHN CORNYN (I) - REP: Votes 1470669 - 76.04%
DWAYNE STOVALL - REP: Votes 231104 - 11.95%
MARK YANCEY - REP: Votes 124864 - 6.46%
Total votes: 1934047
--------------------------------------------------------------------------------
U. S. REPRESENTATIVE DISTRICT 1
JOHNATHAN KYLE DAVIDSON - REP: Votes 9659 - 10.33%
LOUIE GOHMERT (I) - REP: Votes 83887 - 89.67%
Total votes: 93546
--------------------------------------------------------------------------------
and so on ...

편집하다:

언급 한 특정 URL에 대한 데이터를 얻으려면 다음을 사용하십시오.

참고 : 이것은 JSON거대 하므로 데이터의 일부일뿐입니다 . JSON원하는 방식으로 구문 분석 할 수 있도록 전체를 덤프하는 코드를 추가 했습니다.

import json

import requests

url = "https://results.texas-election.com/static/data/election/44144/108/County.json"

headers = {
    "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36",
}
response = requests.get(url, headers=headers).json()


with open("county_results.json", "w") as output:
    json.dump(response, output, indent=4, sort_keys=True)

for v in response.values():
    for id_, race_data in v["Races"].items():
        print(race_data["C"])

샘플 출력 :

{'4250': {'id': 4250, 'N': 'KEN WISE (I)', 'P': 'REP', 'V': 0, 'PE': 0.0, 'C': '#E30202', 'O': 1, 'EV': 0}, '6015': {'id': 6015, 'N': 'TAMIKA "TAMI" CRAFT', 'P': 'DEM', 'V': 0, 'PE': 0.0, 'C': '#007BBD', 'O': 2, 'EV': 0}}
{'2966': {'id': 2966, 'N': 'BRENDA MULLINIX (I)', 'P': 'REP', 'V': 0, 'PE': 0.0, 'C': '#E30202', 'O': 1, 'EV': 0}, '6224': {'id': 6224, 'N': 'JANET BUENING HEPPARD', 'P': 'DEM', 'V': 0, 'PE': 0.0, 'C': '#007BBD', 'O': 2, 'EV': 0}}
{'2967': {'id': 2967, 'N': 'MAGGIE JARAMILLO (I)', 'P': 'REP', 'V': 0, 'PE': 0.0, 'C': '#E30202', 'O': 1, 'EV': 0}, '3708': {'id': 3708, 'N': 'TAMEIKA CARTER', 'P': 'DEM', 'V': 0, 'PE': 0.0, 'C': '#007BBD', 'O': 2, 'EV': 0}}
and much, much more...

어떻게 찾았 JSON습니까?

브라우저 개발자 도구의 네트워크 탭을 살펴 보았습니다. :)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

웹 사이트에서 데이터 스크랩의 한계를 극복하는 방법

분류에서Dev

라이브 데이터를 Google 시트로 웹 스크랩하는 방법

분류에서Dev

반응 형 부트 스트랩 웹 사이트에서 데이터베이스에서 오는 동적 이미지의 크기를 조정하는 방법

분류에서Dev

스크롤 웹 테이블에서 특정 단어를 스크랩하는 방법은 무엇입니까?

분류에서Dev

파이썬을 사용하여 웹 스크랩 이름에 악센트를 제거하는 방법

분류에서Dev

웹 사이트 파이썬에서 스크랩 한 텍스트를 결합하는 방법

분류에서Dev

asmx 웹 서비스 생성 페이지에서 데이터를 스크랩하는 방법

분류에서Dev

Stormcrawler를 사용하여 웹 사이트에서 특정 데이터를 크롤링하는 방법

분류에서Dev

테이블을 데이터 프레임으로 웹 스크랩하는 Python

분류에서Dev

웹 스크랩 HTML 테이블에 속성을 포함하는 방법

분류에서Dev

자바 스크립트 동적 웹 사이트를 스크랩하는 방법

분류에서Dev

내 웹 사이트에서 블로거 템플릿을 사용하는 방법

분류에서Dev

웹 사이트의 마지막 테이블에서 데이터를 긁어내는 방법

분류에서Dev

(PHP) 데이터베이스에있는 서로 다른 두 테이블의 데이터를 부트 스트랩 테이블로 표시하는 방법

분류에서Dev

웹 스크랩 핑, 파이썬에서 bs4를 사용하여 두 개의 동일한 태그에서 데이터를 추출하는 방법

분류에서Dev

선택 항목에 따라 다양한 값으로 웹 사이트 테이블을 스크래핑하는 방법

분류에서Dev

linq로 여러 테이블에서 데이터를 선택하는 방법

분류에서Dev

postgreSQL에서 트리거를 사용하여 한 테이블에서 다른 테이블로 데이터 이동

분류에서Dev

체크 박스를 사용하여 데이터 테이블에서 ID를 선택하는 방법

분류에서Dev

웹 사이트를 스크랩하는 Python 스크립트에 루프를 추가하는 방법

분류에서Dev

Python에서 JavaScript 웹 사이트의 데이터를 올바르게 스크랩하는 방법은 무엇입니까?

분류에서Dev

모바일 웹 사이트에서 아래로 스크롤하거나 무한 스크롤로드를 트리거하는 방법이 있습니까?

분류에서Dev

LocalBusiness 웹 사이트에서 마이크로 데이터를 사용하는 방법

분류에서Dev

웹 사이트를 제대로 스크랩하고 웹 사이트에서 모든 td 텍스트를 얻는 방법

분류에서Dev

테이블보기에서 특정 데이터를 제거하는 방법

분류에서Dev

테이블에서 선택한 셀의 데이터를 읽고 C #에서 업데이트하는 방법

분류에서Dev

Cheerio를 사용하여 웹 데이터를 스크랩하는 방법은 무엇입니까?

분류에서Dev

이름을 사용하여 웹 사이트에서 데이터 테이블 스크랩

분류에서Dev

특정 데이터 행을 기반으로 한 데이터 테이블에서 다른 데이터 테이블로 특정 행을 복사하는 방법

Related 관련 기사

  1. 1

    웹 사이트에서 데이터 스크랩의 한계를 극복하는 방법

  2. 2

    라이브 데이터를 Google 시트로 웹 스크랩하는 방법

  3. 3

    반응 형 부트 스트랩 웹 사이트에서 데이터베이스에서 오는 동적 이미지의 크기를 조정하는 방법

  4. 4

    스크롤 웹 테이블에서 특정 단어를 스크랩하는 방법은 무엇입니까?

  5. 5

    파이썬을 사용하여 웹 스크랩 이름에 악센트를 제거하는 방법

  6. 6

    웹 사이트 파이썬에서 스크랩 한 텍스트를 결합하는 방법

  7. 7

    asmx 웹 서비스 생성 페이지에서 데이터를 스크랩하는 방법

  8. 8

    Stormcrawler를 사용하여 웹 사이트에서 특정 데이터를 크롤링하는 방법

  9. 9

    테이블을 데이터 프레임으로 웹 스크랩하는 Python

  10. 10

    웹 스크랩 HTML 테이블에 속성을 포함하는 방법

  11. 11

    자바 스크립트 동적 웹 사이트를 스크랩하는 방법

  12. 12

    내 웹 사이트에서 블로거 템플릿을 사용하는 방법

  13. 13

    웹 사이트의 마지막 테이블에서 데이터를 긁어내는 방법

  14. 14

    (PHP) 데이터베이스에있는 서로 다른 두 테이블의 데이터를 부트 스트랩 테이블로 표시하는 방법

  15. 15

    웹 스크랩 핑, 파이썬에서 bs4를 사용하여 두 개의 동일한 태그에서 데이터를 추출하는 방법

  16. 16

    선택 항목에 따라 다양한 값으로 웹 사이트 테이블을 스크래핑하는 방법

  17. 17

    linq로 여러 테이블에서 데이터를 선택하는 방법

  18. 18

    postgreSQL에서 트리거를 사용하여 한 테이블에서 다른 테이블로 데이터 이동

  19. 19

    체크 박스를 사용하여 데이터 테이블에서 ID를 선택하는 방법

  20. 20

    웹 사이트를 스크랩하는 Python 스크립트에 루프를 추가하는 방법

  21. 21

    Python에서 JavaScript 웹 사이트의 데이터를 올바르게 스크랩하는 방법은 무엇입니까?

  22. 22

    모바일 웹 사이트에서 아래로 스크롤하거나 무한 스크롤로드를 트리거하는 방법이 있습니까?

  23. 23

    LocalBusiness 웹 사이트에서 마이크로 데이터를 사용하는 방법

  24. 24

    웹 사이트를 제대로 스크랩하고 웹 사이트에서 모든 td 텍스트를 얻는 방법

  25. 25

    테이블보기에서 특정 데이터를 제거하는 방법

  26. 26

    테이블에서 선택한 셀의 데이터를 읽고 C #에서 업데이트하는 방법

  27. 27

    Cheerio를 사용하여 웹 데이터를 스크랩하는 방법은 무엇입니까?

  28. 28

    이름을 사용하여 웹 사이트에서 데이터 테이블 스크랩

  29. 29

    특정 데이터 행을 기반으로 한 데이터 테이블에서 다른 데이터 테이블로 특정 행을 복사하는 방법

뜨겁다태그

보관