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.utils.project import get_project_settings
|
||||
|
|
|
@ -50,9 +50,20 @@ ROBOTSTXT_OBEY = False
|
|||
|
||||
# Enable or disable downloader middlewares
|
||||
# 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
|
||||
# See https://docs.scrapy.org/en/latest/topics/extensions.html
|
||||
|
|
|
@ -2,7 +2,8 @@ import scrapy
|
|||
from urllib.parse import urlencode
|
||||
# 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):
|
||||
|
@ -26,8 +27,6 @@ class SelogerSpider(scrapy.Spider):
|
|||
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
|
||||
|
||||
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'
|
||||
url_css_sel = '.dXJclF::attr(href)'
|
||||
type_css_sel = '.joPkKZ::text'
|
||||
|
@ -78,4 +77,4 @@ class SelogerSpider(scrapy.Spider):
|
|||
if current_ads_nb != total_ads_nb: # If not last page
|
||||
next_page_nb = active_page_nb + 1
|
||||
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