2016-05-01 3 views
0

На данный момент я застрял на своем веб-гусеничном ходу. код до сих пор является:Гибкий веб-сканер

import requests 
from bs4 import BeautifulSoup 

def search_spider(max_pages): 
    page = 1 
    while page <= max_pages: 
     url = 'https://www.thenewboston.com/search.php?type=1&sort=pop&page=' + str(page) 
     source_code = requests.get(url) 
     plain_text = source_code.text 
     soup = BeautifulSoup(plain_text, "html.parser") 
     for link in soup.findAll('a', {'class': 'user-name'}): 
      href = "https://www.thenewboston.com/" + link.get('href') 
      print(href) 
search_spider() 

Это пример из учебника YT. Кто-нибудь знает, как мне нужно изменить код, когда у меня нет окончаний веб-сайта, например, 1,2,3 ... но разные номера, такие как 021587, 0874519, NI875121? Домен веб-сайта anker всегда один и тот же, но конец не является прямым, как в этом примере. Так что мне нужно знать, как вставить переменную для str (page), которая получает номера, заканчивающиеся на сайте, из файла .txt на моем компьютере (несколько сотен) или из списка, когда я копирую и вставляю их в свой код? Наверняка Python должен остановиться, когда достигнут конец списка.

Как я знаю, для python, я не знаю, как решить эту проблему на данный момент. Если вам нужна дополнительная информация, дайте мне знать. Цените свои ответы!

Flo

ответ

0

Ну, если у вас есть список страниц, которые вы хотите посетить, а не диапазон чисел, вы могли бы сделать что-то вроде:

pages = ['021587', '0874519', 'NI875121'] 

for page in pages: 
    url = 'http://example.com/some-path/' + str(page) 

Для чтения из файла:

with open('filename.txt') as f: 
    contents = f.read() 

Предполагая, что ваши страницы отделены друг от друга пробелами, вы можете запустить

pages = contents.split() 

Отъезд documentation for str.split()

+0

Удивительно, что он отлично работает! Благодаря! Еще один вопрос: возможно ли также, что str (pages) ссылается на документ .txt, как указано выше? Это было бы проще, если бы я хотел расширить свой поиск на сайте вместо того, чтобы копировать сотни контентов веб-сайтов в мой код. –

+0

Извините за очень поздний ответ. Вы, наверное, уже поняли это, но я на всякий случай отредактировал свой ответ. –

+0

Как вы думали, я уже понял это. Но в любом случае спасибо за редактирование вашего ответа, может быть интересным для других пользователей. –