使用Python 爬取京东、淘宝等商品详情页的数据,避开反爬虫机制

Python53

Original: https://www.cnblogs.com/sn520/p/15784287.html
Author: Python可乐呀
Title: 使用Python 爬取京东、淘宝等商品详情页的数据,避开反爬虫机制



相关阅读1

Title: Python小游戏——外星人入侵(保姆级教程)第一章 09重构check_events()

系列文章目录

第一章:武装飞船

09重构check_events()

一、重构

1.重构原因

随着游戏的开发,方法_check_events()将越来越长。因此将其部分代码放在两个方法中,其中一个处理KEYDOWN事件,另一个处理KEYUP事件:

2.重构的方法

我们创建了两个新的辅助方法:_check_keydown_events()和_check_keyup_events()。它们都包含形参self和event。这两个方法的代码是从_check_events()中复制而来的,因此将方法_check_events()中相应的代码替换成了对这两个新方法的调用。现在,方法_check_events()更简单,代码结构也更清晰,在其中响应玩家输入时将更容易。

二、代码及演示

1.修改game_functions

修改文件:game_functions.py

点击查看代码

#渗透小红帽python的学习之路
#外星人入侵小游戏
#game_functions.py
#存储让游戏运行的函数

import sys

import pygame
#响应键盘函数
def check_keydown_events(event,ship):
    if event.key == pygame.K_RIGHT:
        # 移动飞船
        ship.moving_right = True
        # 玩家按下右箭头键时标志设为true
    elif event.key == pygame.K_LEFT:
        ship.moving_left = True
        # 玩家按下左箭头键时标志设为true
#响应松开按键的函数
def check_keyup_events(event,ship):
    if event.key == pygame.K_RIGHT:
        ship.moving_right = False
        # 玩家松开右箭头键时标志设为false
    elif event.key == pygame.K_LEFT:
        ship.moving_left = False
        # 玩家松开左箭头键时标志设为false
def check_events(ship): # 在玩家按右箭头时需要将飞船向右移动,
    # 所以给函数加上了形参ship
    for event in pygame.event.get():  # 监听键盘和鼠标事件
        if event.type == pygame.QUIT:
            sys.exit()
    #修改alien_invasion.py,使其导入game_functions
    #并将事件循环替换为对函数check_events()的调用
        elif event.type == pygame.KEYDOWN:
            check_keydown_events(event,ship)

        elif event.type == pygame.KEYUP:
            check_keyup_events(event,ship)

def update_screen(ai_settings,screen,ship):
    # 将更新屏幕的代码移到此处
    screen.fill(ai_settings.bg_color)  # 每次循环都会重绘屏幕
    ship.blitme()  # 每次循环时重新绘制飞船

    pygame.display.flip()  # 让最近绘制的屏幕可见
#飞船移动功能编写完毕

使用Python 爬取京东、淘宝等商品详情页的数据,避开反爬虫机制

2.运行效果

飞船可以任意向左向右移动,直到移动到游戏界面边界时停止。
点击下方链接观看运行效果视频

Python小游戏——外星人入侵飞船移动效果

有什么不懂的地方在评论区留言哦!希望我的文章能对你有所帮助,如果喜欢我的文章,请点赞收藏并关注!你的认可是对我创作最大的鼓励!
2022-08-24 19:38:53 星期三

Original: https://www.cnblogs.com/Penetration-redhat/p/16621359.html
Author: 渗透小红帽
Title: Python小游戏——外星人入侵(保姆级教程)第一章 09重构check_events()

相关阅读2

Title: python和matlab连接

1,实现matlab 和 python混编必须版本对应

matlab 查看版本

命令行窗口输入

```matlab;gutter:true;
pyversion


![python和matlab连接](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20221108/2735599-20220529000320337-1387363338.png)

我的matlab是R2020b的版本,可以对应 3.6,3.8等版本,具体版本对应查看[从 Python 调用 MATLAB - MATLAB & Simulink - MathWorks 中国](https://ww2.mathworks.cn/help/matlab/matlab-engine-for-python.html)

![python和matlab连接](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20221108/2735599-20220529003134677-1518955838.png)

(1)解决版本不对应问题

一开始我的版本是3.10版本,为了连接上matlab,把3.10删了,下载了3.8,但这个时候使用pyversion查看依旧是3.10版本

这时候 ,在matlab命令行中使用

### 在 Windows 平台上设置 Python 版本

先进入matlab命令行

在 Windows® 平台上,使用以下任一方式:

```matlab;gutter:true;
pyenv('Version','version')

```matlab;gutter:true;
pyenv('Version','executable')


其中 executable 是 Python 可执行文件的完整路径。可执行文件路径例如:C:\Users\86191\AppData\Local\Programs\Python\Python38\pythonw.exe然后再使用:


```matlab;gutter:true;
pyversion

查看版本已经换过来啦

(2)配置matlab文件

进入C:\Program Files\Polyspace\R2020b\extern\engines\python

shift+右键 进入cmd

输入

```matlab;gutter:true;
python setup.py build --build-base="builddir" install

python setup.py install --prefix="installdir"

python setup.py build --build-base="builddir" install --prefix="installdir"

python setup.py install --userd


![python和matlab连接](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20221108/2735599-20220529004455825-1593761946.png)

(3)之后就可以在python中调用matlab

我用的是pycharm ,所以首先再pycharm中更换python版本,换成3.8

python代码

```python;gutter:true;
import matlab
import matlab.engine
eng = matlab.engine.start_matlab()
t = eng.myls([4,2])
print(t)

matlab代码

```python;gutter:true;
function x=myls(values)
x = values/2
end


python 代码与matlab代码放在同一文件夹下运行

如果出现 import matlab.engine _出错问题_

```python;gutter:true;
把C:\Program Files\Polyspace\R2020b\extern\engines\python\build\lib下文件赋值粘贴到C:\Users\86191\AppData\Local\Programs\Python\Python38\Lib文件夹下

Original: https://www.cnblogs.com/yaya-dsx/p/16322683.html
Author: yayayua
Title: python和matlab连接

相关阅读3

Title: Python Line Messaging Api

Line Messaging

line 是国外一个很火的实时通信软件,类似与WX,由于公司业务需求,需要基于line开发一个聊天平台,下面主要介绍关于line messaging api 的使用。

官方api:https://developers.line.biz/en/docs/messaging-api/overview/

官方教程:https://developers.line.biz/en/docs/line-developers-console/overview/

line_bot_api = linebot.LineBotApi('YOUR_CHANNEL_ACCESS_TOKEN')

用于响应来自用户,组和聊天室的事件。您可以从webhook事件对象获取reply_token。

reply_message(self, reply_token, messages, notification_disabled=False, timeout=None)

line_bot_api.reply_message(reply_token, TextSendMessage(text='Hello World!'))

1.随时向单个用户,组和聊天室发送消息

push_message(self, to, messages, notification_disabled=False, timeout=None)

line_bot_api.push_message(to, TextSendMessage(text='Hello World!'))

2.随时向多个用户,组和聊天室发送消息

multicast(self, to, messages, notification_disabled=False, timeout=None)

line_bot_api.multicast(['to1', 'to2'], TextSendMessage(text='Hello World!'))

随时向所有关注的用户发送消息

broadcast(self, messages, notification_disabled=False, timeout=None)

line_bot_api.broadcast(TextSendMessage(text='Hello World!'))

get_profile(self, user_id, timeout=None)

profile = line_bot_api.get_profile(user_id) # 通过用户id,获取用户信息

print(profile.display_name)
print(profile.user_id)
print(profile.picture_url)
print(profile.status_message)

获取用户发送的图像,视频和音频数据。

get_message_content(self, message_id, timeout=None)

message_content = line_bot_api.get_message_content(message_id)
basedir = os.path.abspath(os.path.dirname(__file__))
file_path = basedir + "../.."
with open(file_path, 'wb') as fd:
    for chunk in message_content.iter_content():
        fd.write(chunk)

get_bot_info(self, timeout=None)

bot_info = line_bot_api.get_bot_info()

print(bot_info.display_name)
print(bot_info.user_id)
print(bot_info.basic_id)
print(bot_info.premium_id)
print(bot_info.picture_url)
print(bot_info.chat_mode)
print(bot_info.mark_as_read_mode)

line api 服务器返回错误

try:
    line_bot_api.push_message('to', TextSendMessage(text='Hello World!'))
except linebot.exceptions.LineBotApiError as e:
    print(e.status_code)
    print(e.request_id)
    print(e.error.message)
    print(e.error.details)

示例:

{
  "destination": "xxxxxxxxxx",
  "events": [
    {
      "replyToken": "0f3779fba3b349968c5d07db31eab56f",
      "type": "message",
      "mode": "active",
      "timestamp": 1462629479859,
      "source": {
        "type": "user",
        "userId": "U4af4980629..."
      },
      "message": {
        "id": "325708",
        "type": "text",
        "text": "Hello, world"
      }
    },
    {
      "replyToken": "8cf9239d56244f4197887e939187e19e",
      "type": "follow",
      "mode": "active",
      "timestamp": 1462629479859,
      "source": {
        "type": "user",
        "userId": "U4af4980629..."
      }
    }
  ]
}
  • destination:接收Webhook事件,漫游器的用户ID
  • events: 事件列表
  • replyToken:使用reply token能够直接回复
  • type:事件类型
  • mode:channel的状态
  • active:活动状态
  • standby(正在开发中):频道正在等待
  • timestamp:事件的时间(时间戳)
  • source:具有事件源信息,user、group、room对象
  • type:类型
  • userId:用户Id
  • message:消息对象
  • id:消息id
  • type:消息类型
  • text:文本

用户在组或聊天室中取消发送消息时的事件对象

LINE官方帐户被添加为好友(或被拒绝)时触发的事件对象

LINE官方帐户被取消关注时触发的事件对象

LINE官方帐户加入群组或聊天室时触发的事件对象

用户加入LINE官方帐户所在的组或聊天室时触发的事件对象

用户退出LINE官方帐户所在的组或聊天室时触发的事件对象

Original: https://www.cnblogs.com/pungchur/p/14385539.html
Author: Nolinked
Title: Python Line Messaging Api