Added User-Agent rotation
This commit is contained in:
parent
3771e4d507
commit
0655c01cc9
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/env ipython3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
from scrapy.crawler import CrawlerProcess
|
from scrapy.crawler import CrawlerProcess
|
||||||
from scrapy.utils.project import get_project_settings
|
from scrapy.utils.project import get_project_settings
|
||||||
|
|
|
@ -50,9 +50,20 @@ ROBOTSTXT_OBEY = False
|
||||||
|
|
||||||
# Enable or disable downloader middlewares
|
# Enable or disable downloader middlewares
|
||||||
# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
|
# See https://docs.scrapy.org/en/latest/topics/downloader-middleware.html
|
||||||
#DOWNLOADER_MIDDLEWARES = {
|
|
||||||
# 'ImmoScrap.middlewares.ImmoscrapDownloaderMiddleware': 543,
|
# Custom middleware to rotate User-Agents:
|
||||||
#}
|
DOWNLOADER_MIDDLEWARES = {
|
||||||
|
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
|
||||||
|
'scrapy.downloadermiddlewares.retry.RetryMiddleware': None,
|
||||||
|
'scrapy_fake_useragent.middleware.RandomUserAgentMiddleware': 400,
|
||||||
|
'scrapy_fake_useragent.middleware.RetryUserAgentMiddleware': 401,
|
||||||
|
}
|
||||||
|
FAKEUSERAGENT_PROVIDERS = [
|
||||||
|
# 'scrapy_fake_useragent.providers.FakeUserAgentProvider', # Depends on http://useragentstring.com which is currently down
|
||||||
|
'scrapy_fake_useragent.providers.FakerProvider', # if FakeUserAgentProvider fails, we'll use faker to generate a user-agent string for us
|
||||||
|
'scrapy_fake_useragent.providers.FixedUserAgentProvider', # fall back to USER_AGENT value
|
||||||
|
]
|
||||||
|
USER_AGENT = 'Mozilla/5.0 (X11; Linux x86_64; rv:79.0) Gecko/20100101 Firefox/79.0' # Fallback value
|
||||||
|
|
||||||
# Enable or disable extensions
|
# Enable or disable extensions
|
||||||
# See https://docs.scrapy.org/en/latest/topics/extensions.html
|
# See https://docs.scrapy.org/en/latest/topics/extensions.html
|
||||||
|
|
|
@ -2,7 +2,8 @@ import scrapy
|
||||||
from urllib.parse import urlencode
|
from urllib.parse import urlencode
|
||||||
# from math import ceil
|
# from math import ceil
|
||||||
|
|
||||||
# The only requrement to bypass protections on seloger is to spoof User-Agent
|
# WRONG : The only requrement to bypass protections on seloger is to spoof User-Agent
|
||||||
|
# Let's rotate User-Agents
|
||||||
|
|
||||||
|
|
||||||
class SelogerSpider(scrapy.Spider):
|
class SelogerSpider(scrapy.Spider):
|
||||||
|
@ -26,8 +27,6 @@ class SelogerSpider(scrapy.Spider):
|
||||||
stetienne_params['searchareas'] = stetienne_area
|
stetienne_params['searchareas'] = stetienne_area
|
||||||
stetienne_params['LISTING-LISTpg'] = 1 # From python 3.7 dict keep insertion order. We wand the page to be the last param
|
stetienne_params['LISTING-LISTpg'] = 1 # From python 3.7 dict keep insertion order. We wand the page to be the last param
|
||||||
|
|
||||||
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0'}
|
|
||||||
|
|
||||||
ads_css_sel = '.ListContent__SmartClassifiedExtended-sc-1viyr2k-2'
|
ads_css_sel = '.ListContent__SmartClassifiedExtended-sc-1viyr2k-2'
|
||||||
url_css_sel = '.dXJclF::attr(href)'
|
url_css_sel = '.dXJclF::attr(href)'
|
||||||
type_css_sel = '.joPkKZ::text'
|
type_css_sel = '.joPkKZ::text'
|
||||||
|
@ -78,4 +77,4 @@ class SelogerSpider(scrapy.Spider):
|
||||||
if current_ads_nb != total_ads_nb: # If not last page
|
if current_ads_nb != total_ads_nb: # If not last page
|
||||||
next_page_nb = active_page_nb + 1
|
next_page_nb = active_page_nb + 1
|
||||||
next_page = active_page.split('LISTING-LISTpg=')[0] + f'LISTING-LISTpg={next_page_nb}'
|
next_page = active_page.split('LISTING-LISTpg=')[0] + f'LISTING-LISTpg={next_page_nb}'
|
||||||
yield response.follow(next_page, headers=self.headers, callback=self.parse)
|
yield response.follow(next_page, callback=self.parse)
|
||||||
|
|
Loading…
Reference in New Issue