python Scrapy google trends

來源:互聯網
上載者:User

標籤:from   for   coding   tar   geo   git   dss   lock   elf   

# -*- coding: utf-8 -*-import scrapy,jsonfrom urllib import parseclass GoogleTrendsSpider(scrapy.Spider):    name = ‘google_trends‘    allowed_domains = [‘google.com‘]    #擷取token地址    GENERAL_URL = ‘https://trends.google.com/trends/api/explore?{}‘    #擷取關鍵字csv地址    INTEREST_OVER_TIME_URL = ‘https://trends.google.com/trends/api/widgetdata/multiline/csv?{}‘    #開啟useragent和代理中介軟體    custom_settings = {        ‘DOWNLOADER_MIDDLEWARES‘ : {            ‘blockchain.middlewares.RandomUserAgent‘: 390,            ‘blockchain.middlewares.RandomProxy‘: 544,        },        # ‘COOKIES_ENABLED‘ : False        ‘DOWNLOAD_DELAY‘:1    }        def start_requests(self):        ‘‘‘            從頁面中擷取的csv下載url參數            ‘keyword‘: ‘關鍵字‘,             ‘time‘: ‘now 7-d‘,             ‘geo‘: ‘‘        ‘‘‘        req = {            ‘comparisonItem‘:[{‘keyword‘: ‘關鍵字‘, ‘time‘: ‘now 7-d‘, ‘geo‘: ‘‘}],            ‘category‘: 0        }        req = json.dumps(req).encode(‘utf-8‘)        token_payload = {            ‘hl‘: b‘en-US‘,            ‘tz‘: b‘-480‘,            ‘req‘: req,            ‘property‘: b‘‘,        }        body = parse.urlencode(token_payload)        url = self.GENERAL_URL.format(body)        reqs.append(scrapy.Request(url=url,callback=self.parse_token,meta={‘item‘:{‘coin_id‘:row.id}}))        return reqs    def parse_token(self,response):        ‘‘‘            解析結果,擷取token        ‘‘‘        bodyObj = json.loads(response.body.decode(‘utf-8‘)[4:])        for row in bodyObj[‘widgets‘]:            if row[‘id‘] == ‘TIMESERIES‘:                token = row[‘token‘]                request = row[‘request‘]                params = {                    ‘tz‘: ‘-480‘,                    ‘req‘: json.dumps(request),                    ‘token‘:token                }                body = parse.urlencode(params)                url = self.INTEREST_OVER_TIME_URL.format(body)                yield scrapy.Request(url=url,callback=self.parse_row,meta={‘item‘:response.meta[‘item‘]})    def parse_row(self, response):        ‘‘‘        解析csv        ‘‘‘        bodytext = response.body.decode(‘utf-8‘)        print(bodytext)

  抄自:pytrends

python Scrapy google trends

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.