guns.ru парсер частных обьявлений

__author__ = 'ZeLib0ba -> http://surin.ru'
# парсинг частный обьявлений с guns.ru
# на выходе получается нумерованный список который удобно читать.
# писалось для себя, так что все комены по пповоду говнокода можете оставить при себе:).
# просто запускаем , на выходе получаем файл links.html 
# по умолчанию первые 70 постов поменять можно, см. примечание в коде
import requests
from bs4 import BeautifulSoup
head = """<!DOCTYPE html><html><head lang="en">
<link href='http://fonts.googleapis.com/css?family=Ubuntu&subset=latin,cyrillic' rel='stylesheet' type='text/css'>
    <meta charset="UTF-8">
<style  type="text/css">body,html {	font-family: 'Ubuntu', sans-serif;color: #000000;}
a:link,a:visited,a:active {color: #000000;text-decoration:none;}
a:hover {text-decoration:underline;}
</style></head><body>"""
def page_url(url):
    page = None
    try:
        r = requests.get(url)
        if r.status_code == 200:
            page = r.text
    except:
        page = 'Error Parsing'
    return page
def main():
    all_links = []
    f = open('links.html','w',encoding='utf-8')
    a = page_url('http://forum.guns.ru/forumtopics/9.html')
    soup = BeautifulSoup(a)
    print(soup.text)
    all = soup.find_all('a')
    print(all)
    for i in all:
        print(i)
        forumlink = i.get('href')
        bbb = i.get('target')
        if "http://forum.guns.ru/forummessage/9/" in forumlink:
            if "-"  not in forumlink:
                if not bbb:
                    if not '>1<' in str(i):
                        all_links.append(i)
    f.write(head)
    count = 0
    for i in all_links:
        if not 'ПРАВИЛА РАЗДЕЛА' in i:
            aaa = str(i).replace('<b>','')
            bbb = str(aaa).replace('</b>','')
            print(bbb)
            links123 = str(count) + '. ' + str(bbb).lower() + "<br>"
            f.write(links123)
            count +=1
            if count == 70: # тут поменять кол-ва постов для загрузки
                break
            print(count)
    f.write('</body></html>')
if __name__ == '__main__':
    main()
Поделиться
Отправить
Популярное