2015-12-20 4 views
1

Как вы можете видеть, у меня есть две переменные: переменная с именем href, которая имеет несколько ссылок как одну строку и переменную с именем text, теперь в text У меня есть ссылки, которые я уже посетил/загружен с. Я хочу, чтобы Python печатал текст, который присутствует в href, но не в text.Поиск текста, отсутствующего в строке

Итак, я предполагаю, что он использует цикл for?

Когда я запускаю одиночные буквы, они возвращаются, все разделяются на другую строку.

import requests 
from bs4 import BeautifulSoup 

url = 'amazon.com' 
source_code = requests.get(url) 
plain_text = source_code.text 
soup = BeautifulSoup(plain_text, 'html.parser') 

for link in soup.findAll('a', {'class': 'gridItem-trackInfo-title-anchor'}): 
    href = link.get('href') 

    file = open('file.txt', 'r') 
    text = file.read() 
    file.close 

    for i in href: 
     if i not in text: 
      print(i) 
+4

Что вы пробовали, и можете ли вы опубликовать более полный пример? SO не является службой записи кода, мы можем помочь вам устранить то, что вы сделали, но не писать код для вас. –

+0

Можете ли вы привести пример 'href'? –

+0

Я использовал Beautifulsoup для сбора всех ссылок определенного класса HTML, и я сохранил эти ссылки в href. –

ответ

0

Кажется, что HREF является строкой, и вы итерацию над ней. Является ли этот код лучше?

import requests 
from bs4 import BeautifulSoup 

url = 'amazon.com' 
source_code = requests.get(url) 
plain_text = source_code.text 
soup = BeautifulSoup(plain_text, 'html.parser') 

file = open('file.txt', 'r') 
text = file.read() 
file.close() 

for link in soup.findAll('a', {'class': 'gridItem-trackInfo-title-anchor'}): 
    href = link.get('href') 

    if href not in text: 
     print(href) 
+0

Это сделало трюк, спасибо! –

0

Если вы просто хотите, чтобы вход на одной строке, используйте print(i, end='') и вы должны быть в порядке.


Если вы хотите ссылки вы должны сделать

for i in links(href): 
    if i not in links(text): 
     print(i) 

Если функция links может быть найдена на retrieve links from web page using python and BeautifulSoup


Если вы хотите ссылки, а не буквы использовать:

if link not in text: 
     print(link) 

Прежде чем вы перебираете буквы каждой ссылки.

Вместо:

for i in href: 
    if i not in text: 
     print(i) 
+0

Python думает, что я спрашиваю, какие буквы нет в тексте, но то, что я ищу, задает полные ссылки –

+0

@GeorgeR - так вам нужно написать функцию для извлечения ссылок с веб-страницы. см. http://stackoverflow.com/questions/1080411/retrieve-links-from-web-page-using-python-and-beautifulsoup – Caridorc

+0

Ссылки, которые я сохранил в href, теперь то, что я хочу сделать, это строка распечатывается, что указывает, какие ссылки отсутствуют в тексте. И все, что возвращается, - это однократные письма –

Смежные вопросы