Size: a a a

2019 October 03

s

serhii in Scrapy
Если есть желание отправлять пр в этом месяце и получить футболку, то мне как раз для моего проектика опенсорсного нужно пару парсеров
источник

К

Кирилл in Scrapy
Что проект делает?
источник

АП

Агент Печенька in Scrapy
serhii
Если есть желание отправлять пр в этом месяце и получить футболку, то мне как раз для моего проектика опенсорсного нужно пару парсеров
Заноси.
источник

s

serhii in Scrapy
источник

s

serhii in Scrapy
Кирилл
Что проект делает?
Там вроде в ридми описал.
Если что-то добавить можно - напишите.
источник

D

Dmitry in Scrapy
Всем привет. Вопрос. Кто знает как в существующем парсингу прикрутить подмену прокси? Есть два скрипта: один парсит, второй меняет прокси ТК сайт видимо защищен
источник

D

Dmitry in Scrapy
Dmitry
Всем привет. Вопрос. Кто знает как в существующем парсингу прикрутить подмену прокси? Есть два скрипта: один парсит, второй меняет прокси ТК сайт видимо защищен
Это парсер:
import requests
from bs4 import BeautifulSoup as bs
import csv

headers = {'accept': '*/*',
          'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'}


base_url = 'https://careers.propertyfinder.com'

def parse(base_url, headers):
   jobs = []
   session = requests.Session()
   request = session.get(base_url, headers=headers)
   if request.status_code == 200:
       soup = bs(request.content, 'html.parser')
       divs = soup.find_all('ul', attrs={'class': 'whr-items'})
       for div in divs:
           title = div.find('h3 ', attrs={'class': 'whr-item'}).text
           href = div.find('a')['href']
           location = div.find('li', attrs={'class': 'whr-location'}).text
           jobs.append({
               'title_propertyfinder': title,
               'href_propertyfinder': href,
               'location_propertyfinder': location
           })
       print(jobs)
   else:
       print('ERROR' or 'Done' + str(request.status_code))
   return jobs


def files_writer(jobs):
   with open('propertyfinder_jobs.csv', 'w', newline='', encoding='utf-8') as file:
       a_pen = csv.writer(file)
       a_pen.writerow(('title_propertyfinder', 'href_propertyfinder', 'location_propertyfinder'))
       for job in jobs:
           a_pen.writerow((job['title_propertyfinder'], job['href_propertyfinder'], job['location_propertyfinder']))


jobs = parse(base_url, headers)
files_writer(jobs)


Это подмена proxy
import requests
from bs4 import BeautifulSoup
from random import choice
from time import sleep
from random import uniform


def get_html(url, useragent=None, proxy=None):
   r = requests.get(url, headers=useragent, proxies=proxy)
   return r.text


def get_ip(html):
   print('New proxy & User-Agent')
   soup = BeautifulSoup(html, 'lxml')
   ip = soup.find('span', class_='ip').text.strip()
   ua = soup.find('span', class_='ip').find_next_sibling('span').text.strip()
   print(ip)
   print(ua)
   print('---------------------')



def main():
   url = 'http://sitespy.ru/my-ip'

   useragents = open('useragents.txt').read().split('\n')
   proxies = open('proxies.txt').read().split('\n')


   for i in range(10):
       a = uniform(3,6)
       print(a)
       sleep(a)

       proxy = {'http': 'http://' + choice(proxies)}
       useragent = {'User-Agent': choice(useragents)}

       print(useragent)
       try:
           html = get_html(url, useragent, proxy)
       except:
           continue

       get_ip(html)


if __name__ == '__main__':
   main()
источник

К

Кирилл in Scrapy
serhii
Там вроде в ридми описал.
Если что-то добавить можно - напишите.
Насколько вижу, на все help wanted по парсерам откликнулись
источник

К

Кирилл in Scrapy
Dmitry
Это парсер:
import requests
from bs4 import BeautifulSoup as bs
import csv

headers = {'accept': '*/*',
          'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'}


base_url = 'https://careers.propertyfinder.com'

def parse(base_url, headers):
   jobs = []
   session = requests.Session()
   request = session.get(base_url, headers=headers)
   if request.status_code == 200:
       soup = bs(request.content, 'html.parser')
       divs = soup.find_all('ul', attrs={'class': 'whr-items'})
       for div in divs:
           title = div.find('h3 ', attrs={'class': 'whr-item'}).text
           href = div.find('a')['href']
           location = div.find('li', attrs={'class': 'whr-location'}).text
           jobs.append({
               'title_propertyfinder': title,
               'href_propertyfinder': href,
               'location_propertyfinder': location
           })
       print(jobs)
   else:
       print('ERROR' or 'Done' + str(request.status_code))
   return jobs


def files_writer(jobs):
   with open('propertyfinder_jobs.csv', 'w', newline='', encoding='utf-8') as file:
       a_pen = csv.writer(file)
       a_pen.writerow(('title_propertyfinder', 'href_propertyfinder', 'location_propertyfinder'))
       for job in jobs:
           a_pen.writerow((job['title_propertyfinder'], job['href_propertyfinder'], job['location_propertyfinder']))


jobs = parse(base_url, headers)
files_writer(jobs)


Это подмена proxy
import requests
from bs4 import BeautifulSoup
from random import choice
from time import sleep
from random import uniform


def get_html(url, useragent=None, proxy=None):
   r = requests.get(url, headers=useragent, proxies=proxy)
   return r.text


def get_ip(html):
   print('New proxy & User-Agent')
   soup = BeautifulSoup(html, 'lxml')
   ip = soup.find('span', class_='ip').text.strip()
   ua = soup.find('span', class_='ip').find_next_sibling('span').text.strip()
   print(ip)
   print(ua)
   print('---------------------')



def main():
   url = 'http://sitespy.ru/my-ip'

   useragents = open('useragents.txt').read().split('\n')
   proxies = open('proxies.txt').read().split('\n')


   for i in range(10):
       a = uniform(3,6)
       print(a)
       sleep(a)

       proxy = {'http': 'http://' + choice(proxies)}
       useragent = {'User-Agent': choice(useragents)}

       print(useragent)
       try:
           html = get_html(url, useragent, proxy)
       except:
           continue

       get_ip(html)


if __name__ == '__main__':
   main()
Большие куски кода лучше выкладывать через pastebin или аналоги
источник

D

Dmitry in Scrapy
Кирилл
Большие куски кода лучше выкладывать через pastebin или аналоги
а какие еще аналоги ?
источник

К

Кирилл in Scrapy
Dmitry
а какие еще аналоги ?
codepad, gist
источник

D

Dmitry in Scrapy
Кирилл
codepad, gist
Знаю , спасибо
источник

s

serhii in Scrapy
Кирилл
Насколько вижу, на все help wanted по парсерам откликнулись
https://github.com/serhii73/place2live/issues/33
вот простая задачка, в принципе.
можно с нее начать, если есть желание =)
источник

s

serhii in Scrapy
Кирилл
Насколько вижу, на все help wanted по парсерам откликнулись
источник

К

Кирилл in Scrapy
Да, я ознакомился, может завтра парочку пр сделаю
источник

s

serhii in Scrapy
Кирилл
Да, я ознакомился, может завтра парочку пр сделаю
https://github.com/serhii73/place2live/issues/1
вот это круто было би интегрировать.
сейчас where.py спрашивает тебя о том, с какой ты страны, чтобы все проанализировать.
но если он будет спрашивать еще и твой возраст и потом,  в результат писать в какой стране ты дольше проживешь - это было бы просто очень круто.
источник

i

ildar in Scrapy
Михаил Синегубов
народ, кто помнит, какая максимальная длинна урл при GET запросе?
если ты рулишь сервером, это значение можно увеличить. Но вообще, не рекомендуется, лучше на POST перенести
источник

МС

Михаил Синегубов in Scrapy
ildar
если ты рулишь сервером, это значение можно увеличить. Но вообще, не рекомендуется, лучше на POST перенести
Не, просто на одном сайте get генерится, ибинячей длины.
источник
2019 October 06

EY

Eto Ya in Scrapy
Всем привет, есть вот такой сайт https://i-c-a.su/ , как бы вы реализовали парсинг картинок? Там при выборе например ленты ссылка не меняется, как была i-c-a.su так и остаётся
источник

I

Ivan in Scrapy
Eto Ya
Всем привет, есть вот такой сайт https://i-c-a.su/ , как бы вы реализовали парсинг картинок? Там при выборе например ленты ссылка не меняется, как была i-c-a.su так и остаётся
картинки справа или слева собираешь?
источник