Код Selenium не может очистить переполнение стека - PullRequest
0 голосов
/ 07 марта 2020

Я строил веб-скребок с python selenium. Скрипт очищал сайты, такие как amazon и flipcart, но не смог очистить переполнение стека и стиль. Он всегда возвращает мне пустой файл .csv.

Вот мой код для переполнения стека:

from selenium import webdriver 
from selenium.webdriver.chrome.options import Options 
import pandas as pd 

user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) \ Chrome/80.0.3987.132 Safari/537.36' 
driver_exe = 'chromedriver' 

options = Options() 
options.add_argument("--headless") 
options.add_argument(f'user-agent={user_agent}') 
options.add_argument("--disable-web-security") 
options.add_argument("--allow-running-insecure-content") 
options.add_argument("--allow-cross-origin-auth-prompt") 
options.add_argument("--disable-cookie-encryption") 

driver = webdriver.Chrome(executable_path=r"C:\Users\intel\Downloads\Setups\chromedriver.exe", options=options) 
driver.get("https://stackoverflow.com/") 

class_Name = "." + "question-hyperlink" 
x = driver.find_elements_by_css_selector(class_Name.replace(' ','.')) 
web_content_list = []

for i in x: 
    web_content_dict = {} 
    web_content_dict["Title"] = i.text 
    web_content_list.append(web_content_dict)

df = pd.DataFrame(web_content_list) 
df.to_csv(r'C:\Users\intel\Desktop\data_file.csv', index=False, mode='a', encoding='utf-8')

Приведенный выше код stackovrflow был решен путем добавления / вопросов в ссылку.

код для сайта OFashion

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import pandas as pd
import time

user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) ' \
             'Chrome/80.0.3987.132 Safari/537.36'

driver_exe = 'chromedriver'
options = Options()
#options.add_argument("--headless")
options.add_argument(f'user-agent={user_agent}')
options.add_argument("--disable-web-security")
options.add_argument("--allow-running-insecure-content")
options.add_argument("--allow-cross-origin-auth-prompt")

driver = webdriver.Chrome(executable_path=r"C:\Users\intel\Downloads\Setups\chromedriver.exe", options=options)
driver.get("https://www.ofashion.com.cn/goods/10001?t=15777838840003")
class_Name = "." + "content-par"
x = driver.find_elements_by_css_selector(class_Name.replace(' ','.'))
web_content_list = []

for i in x:
    web_content_dict = {}
    web_content_dict["Title"] = i.text
    web_content_list.append(web_content_dict)

df = pd.DataFrame(web_content_list)
df.to_csv(r'C:\Users\intel\Desktop\data_file.csv',
         index=False, mode='a', encoding='utf-8')

Ответы [ 2 ]

1 голос
/ 07 марта 2020

Вот ваша проблема - вы не вошли в систему. StackOverflow отображает ваши вопросы только в том случае, если вы вошли в систему - поэтому, если вы сделаете так, чтобы программа нажимала кнопку «Войти», вводила ваше имя пользователя и пароль и отправляла это, код будет работать оттуда. (Я выяснил это, убрав атрибут безголового)

0 голосов
/ 07 марта 2020

Вам не нужно входить в систему. Вы должны быть в состоянии сделать это без особой работы:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...