百度网页关键字抓取(Python中的协程竞争度如何查看/关键字的竞争)

优采云 发布时间: 2022-04-18 03:23

  百度网页关键字抓取(Python中的协程竞争度如何查看/关键字的竞争)

  关键词如何查看竞争度,第一次接触应该知道,直接去浏览器搜索关键词,比如百度搜索一个关键词,微博,一行灰色头上的小字,“百度会为你找到大约100,000,000条相关结果。” 这是关键词的竞争程度,关系到你后期关键词排名优化的难易程度,当然这只是一个参考指标。

  当然,还有一个很重要的参考指标,关键词的百度指数,对于关键词已经是收录,大部分应该由关键词研究百度索引优化处理,大字成指数!

  关键点 asyncio --- 异步 I/O

  从 Python 3.4 开始,Python 中加入了协​​程的概念,但是这个版本的协程仍然是基于*敏*感*词*对象的。在 Python 3.5 中,增加了 async/await,使得协程的实现更加方便。

  在 Python 中使用协程最常用的库是 asyncio

  asyncio 是一个用于编写并发代码的库,使用 async/await 语法。

  asyncio 被用作几个高性能 Python 异步框架的基础,包括网络和 网站 服务、数据库连接库、分布式任务队列等。

  asyncio 通常是构建 IO 密集型和高级结构化网络代码的最佳选择。

  event_loop:事件循环相当于一个无限循环。我们可以在这个事件循环中注册一些函数。当条件满足时,会调用相应的处理方法。

  coroutine:中文翻译称为协程,在Python中常被称为协程对象的类型。我们可以在时间循环中注册协程对象,它会被事件循环调用。我们可以使用 async 关键字来定义一个在调用时不会立即执行的方法,而是返回一个协程对象。

  task:task,是对协程对象的进一步封装,包括任务的各种状态。

  future:表示未来执行或不执行任务的结果,其实和task没有本质区别。

  只出现在 Python 3.5 中的 async/await 关键字用于定义协程。其中,async 定义了一个协程,await 用于暂停阻塞方法的执行。

  asyncio 采集并等待并发

  采集比等待更高级别。

  gather 可以对任务进行分组,一般首选gather。

  当需要一些自定义任务时,使用等待。

  单线程

  #百度搜索结果数(竞争度大小)抓取

# 20201113@author:WX:huguo00289

# -*- coding=utf-8 -*-

import requests,re,time

from fake_useragent import UserAgent

def search(keyword):

sum=''

ua=UserAgent()

url=f'https://www.baidu.com/s?wd={keyword}&ie=UTF-8'

headers= {

'User-Agent':ua.random,

'Cookie':'BIDUPSID=E8605F17778754AD6BAA328A17329DAF; PSTM=1595994013; BAIDUID=E8605F17778754AD8EAC311EDCEC5A37:FG=1; BD_UPN=12314353; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; COOKIE_SESSION=75158_0_8_0_82_8_0_0_0_8_1_0_75159_0_1_0_1605083022_0_1605083023%7C9%230_0_1605083023%7C1; H_PS_645EC=c097mGOFZEl3IZjKw2lVOhIl4YyhcIr2Zp3YMimT2D62xwJo8q%2B9jeQnZq3gvUXMGbhD; BA_HECTOR=a42l8ka5ah8h0003611fqs8b60p; BD_HOME=1; H_PS_PSSID=32818_1452_33045_32939_33060_32973_32705_32961',

}

try:

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

#time.sleep(1)

sum=re.search(r'百度为您找到相关结果约(.+?)个',html,re.M|re.I).group(1)

except Exception as e:

print(f"错误代码: {e}")

if sum !='':

print(keyword,sum)

def main():

keywords=["seo优化技巧","百度站长平台","sem怎么学习","全网推广营销","seo网站优化方案","百度烧钱推广","自媒体推广策划"]

for keyword in keywords:

search(keyword)

print('共运行了{}秒'.format(end - start)) # 程序耗时

  asyncio+aiohttp 异步等待

  async def get_content(keyword):

ua = UserAgent()

headers = {

'User-Agent': ua.random,

'Cookie': 'BIDUPSID=E8605F17778754AD6BAA328A17329DAF; PSTM=1595994013; BAIDUID=E8605F17778754AD8EAC311EDCEC5A37:FG=1; BD_UPN=12314353; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; COOKIE_SESSION=75158_0_8_0_82_8_0_0_0_8_1_0_75159_0_1_0_1605083022_0_1605083023%7C9%230_0_1605083023%7C1; H_PS_645EC=c097mGOFZEl3IZjKw2lVOhIl4YyhcIr2Zp3YMimT2D62xwJo8q%2B9jeQnZq3gvUXMGbhD; BA_HECTOR=a42l8ka5ah8h0003611fqs8b60p; BD_HOME=1; H_PS_PSSID=32818_1452_33045_32939_33060_32973_32705_32961',

}

async with aiohttp.ClientSession() as session:

response = await session.get(f'https://www.baidu.com/s?wd={keyword}&ie=UTF-8',headers=headers,timeout=5)

content = await response.read()

return content

async def get_num(keyword):

sum=''

content = await get_content(keyword)

try:

html=content.decode('utf-8')

#time.sleep(1)

sum=re.search(r'百度为您找到相关结果约(.+?)个',html,re.M|re.I).group(1)

except Exception as e:

print(f"错误代码: {e}")

if sum !='':

print(keyword,sum)

def run():

tasks = []

start = time.time() # 记录起始时间戳

keywords=["seo优化技巧","百度站长平台","sem怎么学习","全网推广营销","seo网站优化方案","百度烧钱推广","自媒体推广策划"]

loop = asyncio.get_event_loop()

for keyword in keywords:

c = get_num(keyword)

# 通过返回的协程对象进一步封装成一个任务对象

task = asyncio.ensure_future(c)

tasks.append(task)

loop.run_until_complete(asyncio.wait(tasks))

end = time.time() # 获取结束时间戳

print('共运行了{}秒'.format(end - start)) # 程序耗时

  asyncio+aiohttp 异步采集

  def run_gather():

start = time.time() # 记录起始时间戳

keywords=["seo优化技巧","百度站长平台","sem怎么学习","全网推广营销","seo网站优化方案","百度烧钱推广","自媒体推广策划"]

tasks = [asyncio.ensure_future(get_num(keyword)) for keyword in keywords]

loop = asyncio.get_event_loop()

tasks = asyncio.gather(*tasks)

loop.run_until_complete(tasks)

end = time.time() # 获取结束时间戳

print('共运行了{}秒'.format(end - start)) # 程序耗时

  获取py文件

  参考来源

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线