Простой парсинг avito.ru с помощью Python и Beautiful Soup

Нужно было помониторить несколько сайтов на предмет наличия нужного авто. Для этого очень пригодился Python 2.7 с его библиотекой Beautiful Soup, прикрепляю листинг кода для получения данных с avito.ru:

# -*- coding: utf-8 -*-
from urllib2 import urlopen
from BeautifulSoup import BeautifulSoup
import io

html_doc = urlopen('https://www.avito.ru/yaroslavskaya_oblast/avtomobili/chevrolet/niva?bt=0&i=1&pmax=150000&pmin=10000').read()
soup = BeautifulSoup(html_doc)

# ищем div с нужным классом
collect = soup.find('div', 'js-catalog_before-ads') 
# в найденном div'е, ищем все ссылки (т.е. теги a).
links = collect.findAll('a') 
links_array=[]
for link in links:
    if ((('http://avito.ru'+link.get('href')) not in (links_array))&(link.get('href').find('favorites')==-1)):
        links_array.append('http://avito.ru'+link.get('href'))
pictures = collect.findAll('img')
img_array=[]
for img in pictures:
    if ((('https:'+img.get('src')) not in (links_array))&(link.get('href').find('favorites')==-1)):
        img_array.append('https:'+img.get('src'))
opisanie = collect.findAll('div','about')
opisanie_array=[]
for desc in opisanie:
    opisanie_array.append(desc)
f = io.open('parsed_data.htm', 'w', encoding='utf8')
i=0
#запишем в файл
while i < len(links_array):
    f.write("<a href='"+str(links_array[i]).decode('utf-8')+"'><img src='"+str(img_array[i]).decode('utf-8')+"'/></a>"+str(opisanie_array[i]).decode('utf-8')+"<br/>")
    i=i+1
f.close()

Понравилась статья? Поделиться с друзьями: