Webscraping - Selenium BeautifulSoup - катаясь на велосипеде по страничке - PullRequest
1 голос
/ 27 сентября 2019

Я пытаюсь немного повозиться с селеном (просто изучаю фрагменты - задал несколько вопросов, касающихся Beautifulsoup, и получил несколько полезных советов.

В любом случае, я просто пытаюсь перебирать страницы и захватыватьdiv.details и выведите количество, которое он находит (в качестве начального теста). Проблема в том, что он просто сидит на первой странице и загружает его, застряв в цикле.

Как бы я изменил это, чтобы он циклически проходилpage1, page2 затем end?

from bs4 import BeautifulSoup
import requests
import csv
import pandas
from pandas import DataFrame
import re
import os
import locale
os.environ["PYTHONIOENCODING"] = "utf-8"


from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

page = 1

driver = webdriver.Chrome(ChromeDriverManager().install())
url="https://www.gunstar.co.uk/view-trader/global-rifle-snipersystems/58782?page={page}"





#grab all links which contain the href specifed

with requests.Session() as session:
  while True:
    res=session.get(url.format(page=page))
    soup=BeautifulSoup(res.content,'html.parser')
    gun_details = soup.select('div.details')
    if soup.select("nav_next") is None:
        break
    page += 1
    driver.get(url) #navigate to the page
print(len(gun_details))

1 Ответ

1 голос
/ 27 сентября 2019

Вам не нужен селен для навигации, для этого можно использовать метод запроса.

from bs4 import BeautifulSoup
import requests
import csv
import pandas
from pandas import DataFrame
import re
import os
import locale
os.environ["PYTHONIOENCODING"] = "utf-8"

page = 1
url="https://www.gunstar.co.uk/view-trader/global-rifle-snipersystems/58782?page={}"

with requests.Session() as session:
  while True:
    print(url.format(page))
    res=session.get(url.format(page))
    soup=BeautifulSoup(res.content,'html.parser')
    gun_details = soup.select('div.details')
    print(len(gun_details))
    if len(soup.select(".nav_next"))==0:
        break
    page += 1

Я предоставил для печати и консоли показанный.

https://www.gunstar.co.uk/view-trader/global-rifle-snipersystems/58782?page=1
10
https://www.gunstar.co.uk/view-trader/global-rifle-snipersystems/58782?page=2
4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...