【发布时间】:2019-04-01 10:55:51
【问题描述】:
这会转到 CSV 文件中的 URL,然后向下滚动。我正在尝试从页面中获取公司 URL。我似乎无法让它工作。现在,如果我只使用一个独立的 URL 而不从 CSV 中提取它,它将打印到 powershell。仍然无法将其写入 CSV。
这是我正在使用的几个 URL:
https://www.facebook.com/search/pages/?q=Los%20Angeles%20remodeling
https://www.facebook.com/search/pages/?q=Boston%20remodeling
我的想法是它必须是循环中的循环。或者,它可能是if、elif。我现在还不确定。任何和所有建议将不胜感激。
import time
from selenium import webdriver
from bs4 import BeautifulSoup as bs
import csv
import requests
from selenium.webdriver.support.ui import WebDriverWait
driver = webdriver.Chrome()
elems = driver.find_elements_by_class_name('_32mo')
chrome_options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications" : 2}
chrome_options.add_experimental_option("prefs",prefs)
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get('https://www.facebook.com')
username = driver.find_element_by_id("email")
password = driver.find_element_by_id("pass")
username.send_keys("*****")
password.send_keys("******")
driver.find_element_by_id('loginbutton').click()
time.sleep(2)
with open('fb_urls.csv') as f_input, open('fb_profile_urls.csv', 'w', newline=) as f_output:
csv_input = csv.reader(f_input)
csv_output = csv.writer(f_output)
for url in csv_input:
driver.get(url[0])
time.sleep(5)
lenOfPage = driver.execute_script("window.scrollTo(0, document.body.scrollHeight);var lenOfPage=document.body.scrollHeight;return lenOfPage;")
match=False
while(match==False):
lastCount = lenOfPage
time.sleep(1)
lenOfPage = driver.execute_script("window.scrollTo(0, document.body.scrollHeight);var lenOfPage=document.body.scrollHeight;return lenOfPage;")
if lastCount==lenOfPage:
match=True
for elem in elems:
csv_output.(driver.find_elements_by_tag_name('href'))
【问题讨论】:
-
我不确定我是否理解您的问题,所以大胆猜测:
open('fb_profile_urls.csv', 'w', newline=)将在您每次运行此脚本时擦除文件 -
看,我也是这么想的。但是,通过研究,这是我在 SO 的解决方案中发现的。
-
不,它肯定每次运行脚本时都会擦除文件