Selenium, BeatifulSoup, запросы в цикле - PullRequest
0 голосов
/ 25 августа 2018

Мне просто любопытно, потому что я пытаюсь выучить питон.Я извлекаю данные с сайта.В любом случае, я сделал прокрутку страницы, затем получил заголовок, соответствующий URL, и внутри цикла я запрашиваю этот URL и извлекаю его с помощью BS.Очевидно, это не работает, HTML-код, который я запрашиваю, печатается следующим образом:

<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx</center>
</body>
</html>

Вот код Python

import time
import requests

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup as soup

chromedriver = "/Users/eduardfossas/Downloads/chromedriver"
driver = webdriver.Chrome(chromedriver)

my_url = driver.get("https://wodwell.com/wods/?sort=newest&category=none&feeds=736")
time.sleep(1)

elem = driver.find_element_by_tag_name("body")

no_of_pagedowns = 20

while no_of_pagedowns:
    elem.send_keys(Keys.PAGE_DOWN)
    time.sleep(0)
    no_of_pagedowns-=1

containers = driver.find_elements_by_class_name('wod-title')

for container in containers:

    my_sub_url = "https://wodwell.com/wod/"
    my_sub_url = my_sub_url + container.text + '/'
    page_html = requests.get(my_sub_url).text

    page_soup = soup(page_html, "html.parser")

    main_text = page_soup.select('.workout-list')

Есть ли способ заставить эту работу работать сКрасиваяSoup и запросы?Если нет, думаю, я собираюсь попробовать Scrapy.

Что вы порекомендуете?

С уважением и большим спасибо.

1 Ответ

0 голосов
/ 25 августа 2018

Этого никогда не случалось со мной.

Может быть, это кому-нибудь пригодится, сработало, как только указали заголовки:

headers = {'user-agent' : 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36'}
page_html = requests.get(my_sub_url, headers = headers).text
...