Как очистить динамические веб-страницы с помощью Python

[Что я пытаюсь сделать]

Найдите на указанной ниже веб-странице данные об использованных автомобилях.
http://www.goo-net.com/php/search/summary.php?price_range=&pref_c=08,09,10,11,12,13,14&easysearch_flg=1

[Проблема]

Чтобы очистить целые страницы. В указанном выше URL показаны только первые 30 элементов. Их можно было очистить с помощью кода, который я написал ниже. Ссылки на другие страницы отображаются как 1 2 3 ... но адреса ссылок, похоже, находятся в Javascript. Я искал полезную информацию в Google, но не нашел.

from bs4 import BeautifulSoup
import urllib.request

html = urllib.request.urlopen("http://www.goo-net.com/php/search/summary.php?price_range=&pref_c=08,09,10,11,12,13,14&easysearch_flg=1")

soup = BeautifulSoup(html, "lxml")
total_cars = soup.find(class_="change change_01").find('em').string
tmp = soup.find(class_="change change_01").find_all('span')
car_start, car_end = tmp[0].string, tmp[1].string

# get urls to car detail pages
car_urls = []
heading_inners = soup.find_all(class_="heading_inner")
for heading_inner in heading_inners:
    href = heading_inner.find('h4').find('a').get('href')
    car_urls.append('http://www.goo-net.com' + href)

for url in car_urls:
    html = urllib.request.urlopen(url)
    soup = BeautifulSoup(html, "lxml")
    #title
    print(soup.find(class_='hdBlockTop').find('p', class_='tit').string)
    #price of car itself
    print(soup.find(class_='price1').string)
    #price of car including tax
    print(soup.find(class_='price2').string)

    tds = soup.find(class_='subData').find_all('td')
    # year
    print(tds[0].string)
    # distance
    print(tds[1].string)
    # displacement
    print(tds[2].string)
    # inspection
    print(tds[3].string)

[Что я хочу знать]

Как очистить целые страницы. Я предпочитаю использовать BeautifulSoup4 (Python). Но если это не подходящий инструмент, покажите мне, пожалуйста, другие.

[Моя среда]

  • Windows 8.1
  • Python 3.5
  • PyDev (Затмение)
  • BeautifulSoup4

Любое руководство будет оценено. Спасибо.


person dixhom    schedule 19.11.2015    source источник


Ответы (2)


вы можете использовать селен, как показано ниже:

from selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://example.com')
element = driver.find_element_by_class_name("yourClassName") #or find by text or etc
element.click() 
person ahmad valipour    schedule 19.11.2015
comment
@dixhom, не стесняйтесь ставить галочку рядом с любым ответом, который близок к ответу на вопрос. Проверенная история принятия ответов на StackOverflow побудит больше людей ответить на ваши последующие вопросы. - person ChrisGuest; 20.11.2015
comment
Привет .. Как вы думаете, вы можете помочь мне с http://stackoverflow.com/questions/43033378/instagram-scraping-with-selenium-python - person Sitz Blogz; 27.03.2017

Модуль python splinter может быть хорошей отправной точкой. Он вызывает внешний браузер (например, Firefox) и обращается к DOM браузера, а не только с HTML.

person ChrisGuest    schedule 19.11.2015
comment
Спасибо за ваш ответ. Я впервые знаком с DOM, и я могу заставить его делать такие вещи, как выбор этого элемента и щелчок по этому элементу или что-то в этом роде? Сейчас читаю сайт осколка. - person dixhom; 19.11.2015