【问题标题】:Why is my Selenium code returning only half of the data I requested为什么我的 Selenium 代码只返回我请求的数据的一半
【发布时间】:2020-11-21 09:33:22
【问题描述】:

最近,我编写了一个 selenium 网络爬虫,旨在提取包含在美国举行的所有总统选举数据的表格中的所有信息。该表位于this wikipedia 网站上。

问题是当我将结果写入 .txt 文件时,代码会返回我需要的所有信息。但是每当我尝试在我的文本编辑器中打印相同的结果时,它只会返回我需要的数据的一半。我不明白问题是什么。有人可以帮帮我吗?

这是我的代码。

from selenium import webdriver
from bs4 import BeautifulSoup
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import time
import pandas

# using selenium and shromedriver to extract the javascript wikipage

scrape_options = Options()
scrape_options.add_argument('--headless')
driver = webdriver.Chrome(r'web scraping master/chromedriver', options=scrape_options)
page_info = driver.get('https://en.wikipedia.org/wiki/United_States_presidential_election')

# waiting for the javascript to load


try:
    WebDriverWait(driver,10).until(EC.presence_of_element_located((By.CLASS_NAME,"wikitable")))
finally:
    page = driver.page_source
soup = BeautifulSoup(page, 'html.parser')
table = soup.find('table', {'class': 'wikitable sortable jquery-tablesorter'})
print(table)
with open("loge.txt","w") as f: #Only part I added to the code
    f.write(str(table))

【问题讨论】:

  • 代码在命令提示符下也能正常工作。我的文本编辑器有问题吗?

标签: python-3.x selenium-webdriver web-scraping selenium-chromedriver


【解决方案1】:

我不太确定问题出在哪里,但这可以按预期工作。我已将 loge.txt 更改为 loge.html 并且代码转储了整个表。

介意试试这个吗?

from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

scrape_options = Options()
scrape_options.add_argument('--headless')
driver = webdriver.Chrome(options=scrape_options)
page_info = driver.get('https://en.wikipedia.org/wiki/United_States_presidential_election')

try:
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "wikitable")))
finally:
    page = driver.page_source

soup = BeautifulSoup(page, 'html.parser')
table = soup.find('table', {'class': 'wikitable sortable jquery-tablesorter'})

with open("loge.html", "w") as f:
    f.write(str(table))

【讨论】:

  • 感谢您的回答,问题是代码完美地将完整的表格转储到 FILE 中,但是当我尝试在文本编辑器中显示信息时,它只转储了一半的表格。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-13
  • 2011-02-24
  • 1970-01-01
  • 1970-01-01
  • 2011-10-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多