2017-01-05 4 views
2

Намерения:итерацию ссылки с селена в BS4 и печатях раздели строки

1.Доступа главной страница для http://blogdobg.com.br/ с селеном.

2.Identify статья связывает

3.Insert каждой ссылку в BS4 и получите текст

Проблема: я могу получить как печать всех ссылок или перемещение одного звена в BS4 для разбора и печати. Мои попытки прочитать каждую ссылку закончились одной и той же ссылкой многократно.

Я только начал изучать себя два дня назад, поэтому любые указатели будут оценены.

from selenium import webdriver 
from lxml import html 
import requests 
import re 
from bs4 import BeautifulSoup 

def read (html): 
    html = browser.page_source 
    soup = BeautifulSoup(html,"html.parser") 
    for string in soup.article.stripped_strings: 
      print(repr(string)) 

path_to_chromedriver = '/Users/yakir/chromedriver' 
browser = webdriver.Chrome(executable_path = path_to_chromedriver) 

url = 'http://blogdobg.com.br/' 
browser.get(url) 

articles = browser.find_elements_by_xpath("""//*[contains(concat(" ", @class, " "), concat(" ", "entry-title", " "))]//a""") 

#get all the links 
for link in articles: 
    link.get_attribute("href") 

#Attempt to print striped string from each link's landing page 
for link in articles: 
     read(link.get_attribute("href")) 

##method for getting one link to work all the way through (currently commented out) 
#article1 = articles[1].get_attribute("href") 
#browser.get(article1) 
#read(article1) 

ответ

0

Прежде всего вашей функции read() имеет html параметр в то время как вы определяете html переменных непосредственно внутри этой функции. Это не имеет никакого смысла: ваш аргумент будет игнорироваться в любом случае и BeautifulSoup(html,"html.parser") получит значение от html = browser.page_source, но не от аргумента html

Еще один вопрос: вы не получите все ссылки с

for link in articles: 
    link.get_attribute("href") 

Вы должны использовать list и добавить значения на каждой итерации:

link_list = [] 
for link in articles: 
    link_list.append(link.get_attribute("href")) 

Затем вы можете использовать ссылки как:

for link in link_list: 
    r = requests.get(link) 
    ... 
    # do whatever you want to do with response