干货:翻车之旅,Python站长之家长尾关键词挖掘

优采云 发布时间: 2020-11-11 12:01

  汽车翻车之旅,Python网站站长的父尾关键词挖掘

  关键词 采集汽车翻车旅行,网站管理员的首页防爬坡,会员登录,VIP购买限制,最有可能的是,由于网站管理员的首页修改后,共享代码太多,老板多次更新后,减少韭葱的工作量也增加了,防爬工作也有所增加。

  

  因此,有一次汽车侧翻体验之旅。我已经很久没有写过关于爬虫的文章了,翻转是不可避免的。

  防爬限制:

  在网络上使用Cookie相当简单。当您访问第六页时,您仍然可以直接跳至第一页!

  使用会话保持访问,访问第六页或直接跳到数据的第一页!

  使用参考来访问第六页,或直接跳至第一页!

  我无法理解其特定的反爬网机制。我将浏览器更改为测试,发现页面不断打开。到达第六页时,我需要登录才能正常访问它。

  附加了完整的参考源代码:

  #站长之家关键词挖掘 20201014

#author/微信:huguo00289

# -*- coding: utf-8 -*-

import requests,random,time

from lxml import etree

from urllib import parse

class Httprequest(object):

    ua_list = [

        'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1',

        'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36Chrome 17.0',

        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11',

        'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0Firefox 4.0.1',

        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',

        'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',

        'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',

        'Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11',

    ]

    @property  #把方法变成属性的装饰器

    def random_headers(self):

        cookies = cookies

        return {

            'User-Agent': random.choice(self.ua_list),

            'Cookie':cookies,

        }

class Getwords(Httprequest):

    def __init__(self):

        self.url="https://data.chinaz.com/keyword/allindex/"

    def get_num(self,keyword):

        key = parse.quote(keyword)

        url=f'{self.url}{key}'

        html = requests.get(url,headers=self.random_headers,timeout=5).content.decode("utf-8")

        time.sleep(2)

        req = etree.HTML(html)

        num=req.xpath('//span[@class="c-red"]/text()')[0]

        num=int(num)

        if num>0:

            print(f'>> {keyword} 存在 {num} 个长尾关键词!')

            if num> {keyword} 不存在长尾关键词!')

    def get_words(self,req):

        words=req.xpath('//li[@class="col-220 nofoldtxt"]/a/@title')

        indexs=req.xpath('//li[@class="col-88"]/a/text()')

        for word,index in zip(words,indexs):

            data=word,index

            print(data)

    def get_pagewords(self,num,key):

        pagenum=int(num/50)

        for i in range(1,pagenum+1):

            if i> 正在采集 第{i}页 长尾词数据..')

                url = f'{self.url}{key}/{i}'

                print(url)

                html = requests.get(url,headers=self.random_headers,timeout=5).content.decode("utf-8")

                time.sleep(2)

                req = etree.HTML(html)

                self.get_words(req)

if __name__ == '__main__':

    spider=Getwords()

    spider.get_num("培训")

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线