Невозможно собрать много вопросов с веб-страницы Quora - PullRequest
0 голосов
/ 22 декабря 2018

Я изучаю BeautifulSoup и пытаюсь почистить ссылки на различные вопросы, которые присутствуют на этой странице Quora.

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

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

Есть ли способ обойти как можно больше ссылок на вопросы, представленные на веб-странице?

from bs4 import BeautifulSoup
import requests

root = 'https://www.quora.com/topic/Graduate-Record-Examination-GRE-1'
headers = {'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/42.' }
r = requests.get(root,headers=headers)

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

q = soup.find('div',{'class':'paged_list_wrapper'})
no=0
for i in q.find_all('div',{'class':'story_title_container'}):
    t=i.a['href']
    no=no+1
    print(root+t,'\n\n')

1 Ответ

0 голосов
/ 22 декабря 2018

То, что вы пытаетесь выполнить, не может быть сделано с помощью запросов и BeautifulSoup.Вам нужно использовать Selenium.Здесь я даю ответ, используя селен и хромедрайвер. Загрузите chromedriver для вашей версии хрома и установите селен pip install -U selenium

import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import csv
browser = webdriver.Chrome(executable_path='/path/to/chromedriver')
browser.get("https://www.quora.com/topic/Graduate-Record-Examination-GRE-1")
time.sleep(1)
elem = browser.find_element_by_tag_name("body")
no_of_pagedowns = 5
while no_of_pagedowns:
    elem.send_keys(Keys.PAGE_DOWN)
    time.sleep(0.2)
    no_of_pagedowns-=1
post_elems =browser.find_elements_by_xpath("//a[@class='question_link']")
for post in post_elems:
    print(post.get_attribute("href"))

Если вы используете windows - executable_path='/path/to/chromedriver.exe'

измените эту переменную no_of_pagedowns = 5, чтобы указатьсколько раз вы хотите прокрутить вниз.

Я получил следующий вывод

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...