Не отвечает при сканировании в сети python - PullRequest
0 голосов
/ 17 января 2020

Я хочу получить список золотого креста. Итак,

all

Я обнаружил, что его значение id равно # contentarea_right.
Вдоль субиндекса я написал следующий код

sub index

a_list = soup.select("#contentarea_right > div#box_type_r > table#trend_tab_1 > tbody > tr > td a")
or
a_list = soup.select("#contentarea_right > div > table#trend_tab_1 > tbody > tr > td a")
or
a_list = soup.select("#contentarea_right > div > tbody > tr > td a")
or
a_list = soup.select("#contentarea_right > div > table > tbody > tr > td a")

Но ничего не происходит ... Как исправить?

Полный код

from bs4 import  BeautifulSoup
import urllib.request as req
url = "https://finance.naver.com/sise/"
res = req.urlopen(url)
soup = BeautifulSoup(res, "html.parser")
#contentarea_right > div
a_list = soup.select("#contentarea_right > div#box_type_r > table#trend_tab_1 > tbody > tr > td a")
for a in a_list:
    name = a.string
    print("-",name)

Ответы [ 2 ]

0 голосов
/ 17 января 2020

box_type_r - это класс, а не идентификатор, и в этой таблице нет tbody. tbody, который вы видите в инспекторе, возможно, автоматически генерируется вашим веб-браузером. Измените селектор CSS на следующий.

soup.select("#contentarea_right > div.box_type_r > table#trend_tab_1 > tr > td a")

0 голосов
/ 17 января 2020

Если я использую более короткий селектор

"#contentarea_right #trend_tab_1 a"

, тогда я получаю некоторые данные


Пример с другим селектором

from bs4 import  BeautifulSoup
import urllib.request as req

url = "https://finance.naver.com/sise/"
res = req.urlopen(url)
soup = BeautifulSoup(res, "html.parser")

rows = soup.select("#contentarea_right #trend_tab_1 tr")
for row in rows:
    cols = row.select('td')
    print("-", cols[0].text, '|', cols[1].text)

Результат

- 청호컴넷 | 3,685
- 한진 | 36,950
- 모다이노칩 | 3,500
- 인터로조 | 28,000
- 티피씨글로벌 | 2,650
- 서연탑메탈 | 2,900
- 아이앤씨 | 5,250
- 바른손 | 2,095
- 한글과컴퓨터 | 10,700
- 금강공업우 | 8,890
...