我正在制作这些百科全书页面的爬虫,并且存在一些Selenium和表源抓取错误。
首先,这些葡萄酒百科全书中有超过100.000个内容,所以我使用了"for"。 其次,此爬虫必须打开并抓取每个详细页面,以便 我尝试使用硒铬驱动程序。 第三,详细页面中的表没有 id 或类名,所以我编写了这些代码。 当我运行此爬虫时,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
类型错误回溯(上次调用的最近一次( 在 (( 中 28 驱动程序 = 网络驱动程序。Chrome('./chromedriver.exe'( 29 req1 = requests.get('https://terms.naver.com/list.nhn?cid=48159&categoryId=48159&page={}'.format(page(( ---> 30 driver.get(req1( 31 driver.implicitly_wait(5(
我认为您的print
语句中的错误是:
在' '
标记之外,而不是内部。尝试这种方式,看看是否有效:
print('type: ', one, 'use: ', two)