Веб-сканер, ориентированный на URL-адрес [закрыто]Python

Программы на Python
Ответить
Anonymous
 Веб-сканер, ориентированный на URL-адрес [закрыто]

Сообщение Anonymous »

У меня есть небольшой код, который я пытаюсь создать, чтобы взять определенную страницу tumblr, а затем последовательно сканировать ее по посту # и проверять, существует ли страница. Если это произойдет, он напечатает этот полный URL-адрес в текстовый файл, а если нет, то пропустит.
Я смог определить, что если сообщение не существует, то tumblr будет иметь определенное имя класса для div, где будет отображаться диалоговое окно «публикация не найдена», что означает, что я могу проверить, существует ли этот div, а если нет, то он сохранит URL-адрес.
Проблема, с которой я сталкиваюсь, заключается в том, что BeautifulSoup, Selenium и Драматург не хочет работать ни на что. Я пробовал делать отложенный запуск на случай, если страница все еще загружается, но у меня заканчиваются идеи. У кого-нибудь есть какие-нибудь мысли по этому поводу?
Код довольно простой: он должен проверять код состояния 200, чтобы убедиться, что сервер обработал и ответил, а затем проверяет элементы страницы на наличие имени класса. Следующие шаги зависят от результатов этого логического теста.
**Меня попросили добавить дополнительную информацию о том, что он ищет. Поэтому я скопирую этот ответ из комментариев, чтобы обеспечить большую ясность.
Если вы выберете какую-либо публикацию на Tumblr и затем подниметесь на 1 номер вверх, это обычно не будет рабочей ссылкой. например tumblr.com/funny-text-posts/664730352044179456 работает, а tumblr.com/funny-text-posts/664730352044179457 нет.
Вы заметите, что получите один из 5 конкретных текстовых ответов:
Это сообщение попало в рай.
Это сообщение исчезло, ушел, ушел. Но на Tumblr есть еще, еще, еще больше забавных текстовых сообщений.
Этот пост прекратил свое существование.
Вы опоздали. Этого сообщения больше нет.
Этого сообщения больше нет, но Tumblr все еще есть.
Если вы выполните поиск по этому тексту в инспекторе, вы найдете имя класса только на странице, где указан автоматический ответ. И прежде чем кто-нибудь спросит, да, я также пробовал искать текст напрямую, добавляя все 5 ответов в массив, что, очевидно, тоже не удалось
import requests
from bs4 import BeautifulSoup

def page_has_div_class(url, class_name):
try:
r = requests.get(url, timeout=10)
if r.status_code != 200:
return False # Page not valid

soup = BeautifulSoup(r.text, "html.parser")

# Find ANY whose full class attribute matches exactly
for div in soup.find_all("div"):
if div.get("class") and " ".join(div.get("class")) == class_name:
return True

return False

except Exception as e:
print("Error:", e)
return False

url = "https://www.tumblr.com/BLOG_NAME_TO_SCAN/posts/1"
class_name = "XLWxA H4bQ8"

if page_has_div_class(url, class_name):
print("Found the div class!")
else:
print("Class not found on page.")


Подробнее здесь: https://stackoverflow.com/questions/798 ... eb-crawler
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»