Сканирование многих страниц, таких как интернет-энциклопедия: ошибка Selenium, сканирование HTML-таблиц - PullRequest
0 голосов
/ 26 сентября 2019

Я делаю сканер этих страниц энциклопедии, и есть некоторые ошибки сканирования селена и источника таблицы.

Во-первых, в этой винной энциклопедии содержится более 100.000 содержимого, поэтому я использовал «для».Во-вторых, этот сканер должен открывать и сканировать каждую подробную страницу, поэтому я попытался использовать драйвер Selenium Chrome.В-третьих, таблица на подробной странице не имеет идентификатора или имени класса, поэтому я написал эти коды.Когда я запускаю этот сканер, на странице chrome нет содержимого, и эти коды не работают.

 driver = webdriver.Chrome('./chromedriver.exe')
req1 = requests.get('https://terms.naver.com/list.nhn?cid=48159&categoryId=48159&page={}'.format(page))
driver.get(req1)
driver.implicitly_wait(5)

коды сканирования селена и таблицы

import requests
from bs4 import BeautifulSoup as BS
import time
from selenium import webdriver
import pandas as pd
for page in [1.2]:
    driver = webdriver.Chrome('./chromedriver.exe') #error
    req1 = requests.get('https://terms.naver.com/list.nhn?cid=48159&categoryId=48159&page={}'.format(page))
    driver.get(req1)
    driver.implicitly_wait(5)

    soup = BeautifulSoup(html, "html.parser") 
    link = soup.find_all('a')
    for list in link: #detail pages of encyclopedia
      req2 = requests.get('div.view_list_wrap view_list_4>ul>li.view_list_item>div>div.info_area>strong>a')
      driver.get(req2)
      openElement = driver.findElement(By.linkText("req2")).click() #move to each detail pages
      w_list = html.select('div[1]>div[3]>div[1]>div[2]>div[2]>div>div>div[2]>div>table') #XPath address of detail page
      title = soup.find('h2',{'class':'headword'}).text #name of wine in detail page
      exp=soup.find('p',{'class':'txt'}).text #explanation of wine in detail page
    for tr in w_list : #information table of wine(type,use etc.)
          one = tr.find('td').find('a').text
          two = tr.find('td').find('a').text
          three = tr.find('td').find('a').text
          four = tr.find('td').find('a').text
          five = tr.find('td').find('a').text
          six = tr.find('td').find('a').text
          seven = tr.find('td').find('a').text
          eight = tr.find('td').find('a').text
          nine = tr.find('td').find('a').text
          ten = tr.find('td').find('a').text
          eleven = tr.find('td').find('a').text
          twelve = tr.find('td').find('a').text
          thirteen = tr.find('td').find('a').text
          fourteen = tr.find('td').find('a').text
          fifteen = tr.find('td').find('a').text
          sixteen = tr.find('td').find('a').text
          seventeen = tr.find('td').find('a').text
          eighteen = tr.find('td').find('a').text
          nineteen = tr.find('td').find('a').text
          print( 'type:',one, 'use:',two )

data = {'type:',one, 'use:',two}
df = pd.DataFrame(data)
df.head()
df.to_csv('./wine_list.csv', sep=',', encoding='EUC-KR') #save as csv file

TypeError Traceback (последний из последних вызовов) в () 28 driver = webdriver.Chrome ('./ chromedriver.exe') 29 req1 = reports.get ('https://terms.naver.com/list.nhn?cid=48159&categoryId=48159&page={}'.format(page)) ---> 30 driver.get(req1) 31 driver.implicitly_wait (5)

1 Ответ

1 голос
/ 26 сентября 2019

Я думаю, что ошибка в вашем print утверждении состоит в том, что : находится вне отметок ' ', а не внутри.Попробуйте и посмотрите, как это работает:

print('type: ', one, 'use: ', two)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...