Я пытаюсь написать простой веб-скребок, который просматривает форум, заходит в каждое сообщение, а затем проверяет, есть ли в сообщении какие-либо ссылки на github и хранит эти ссылки.Я делаю это в рамках своего исследования, чтобы увидеть, как люди используют и реализуют процедуры Smart Device.
Я довольно новичок в изучении веб-страниц и использую BeautifulSoup, но столкнулся со странной проблемой.Во-первых, моя программа:
from bs4 import BeautifulSoup
import requests
from user_agent import generate_user_agent
url = 'https://community.smartthings.com/c/projects-stories'
headers = {'User-Agent': generate_user_agent(device_type="desktop", os=('linux'))}
page_response = requests.get(url, timeout=5, headers=headers)
page = requests.get(url, timeout = 5)
#print(page.content)
if page.status_code == 200:
print('URL: ', url, '\nRequest Successful!')
content = BeautifulSoup(page.content, 'html.parser')
print(content.prettify())
project_url = []
for i in content:
project_url += content.find_all("/div", class_="a href")
print(project_url)
То, что я сейчас пытаюсь сделать, - это просто собрать все URL-ссылки на каждый отдельный пост на сайте.Когда я пытаюсь сделать это, он возвращает пустой список.После некоторых экспериментов в попытке выбрать конкретный URL-адрес на основе его идентификатора, я обнаружил, что хотя идентификатор каждого сообщения, кажется, не меняется каждый раз при перезагрузке страницы, он меняется, если веб-сайт обнаруживает, что используется скребок,Я полагаю, что это учитывая, что, когда содержимое веб-страницы выводится на консоль, в конце данных HTML появляется раздел, который гласит:
<!-- include_crawler_content? -->
</div>
<footer class="container">
<nav class="crawler-nav" itemscope="" itemtype="http://schema.org/SiteNavigationElement">
<a href="/">
Home
</a>
<a href="/categories">
Categories
</a>
<a href="/guidelines">
FAQ/Guidelines
</a>
<a href="/tos">
Terms of Service
</a>
<a href="/privacy">
Privacy Policy
</a>
</nav>
Сайт обнаруживает сканер и изменяет его.навигация, основанная на этом.Я пытался создать новый user_agent, чтобы обмануть его, но мне не повезло.
Есть идеи?