初识爬虫
初识爬虫
初识爬虫 Python很火,已经成为世界上最流行的编程语言之一。它上手简单,可以做很多事情,web开发、科学计算、3D建模、人工智能、嵌入式开发、云计算等等都能看到Python的身影;它还可以爬取你想要的数据,可以做外挂,之前的微信跳一跳,12306抢票等都可以用Python实现,还有很多数据分析、项目系统、聊天系统、游戏等等,既然它这么牛X,人生苦短,我要学Python!
什么是爬虫?
打开浏览器,输入百度网址http://www.baidu.com回车即可看到一个网页
大家一定很熟悉吧,但是当你按下ctrl+U键后(或者右键点击“查看网页源代码”),会变成这个样子的
你一定会说这是什么鬼,有没有想过,网上这么多网站,背后都是一些数据,如果用一个自动化的程序,轻松把它们给爬取下来,是不是很爽?比如一些小电影网站,我们用python写几行代码,然后一运行,分分钟程序就帮我们爬取了所有小电影到我们本地硬盘;再比如,想了解一个行业的趋势,是不是可以把它们历年的数据都爬取下来,然后对这些数据进行一些分析呢?这个自动化程序就是“爬虫”!
怎么玩爬虫?
互联网上众多的网站都是托管在服务器上的,这些服务器24小时运行,时刻等待着用户的请求。爬虫,首先会模拟请求,就像在浏览器上输入网址然后回车一样,爬虫利用一些HTTP库向指定的服务器发起请求(爬虫会假装自己是浏览器),大多数的服务器会傻不拉叽的以为是真浏览器发送的请求(当然有些精明的网站它们会建立一些反爬虫机制),就直接返回数据给爬虫,这样我们就可以对这些数据进行“微”操作了。不同情况下服务器返回给我们的数据格式不一样,有HTML、JSON、二进制的数据,我们可以使用不同的方式对它们进行处理并进行保存,保存的方式有数据库、硬盘等。
总结
以上就是Python爬虫的爬取流程,这是我们开启爬虫体系的第一篇,接下来我们将一步一步来操作我们的爬虫。今天让我们一起学习如何利用爬虫来制作一个“京东秒杀”的小脚本。
1
首先需要配置好环境:手动下载安装Anaconda3-2019.03、PyCharm 2019.1.3、chromedrive(版本号必须跟你的谷歌浏览器版本号一致,下载解压到和python.exe在一个文件夹里,https://sites.google.com/a/chromium.org/chromedriver/home需要外网)
2
安装selenium(一个用于WEB应用程序自动化测试工具),具体方法:鼠标左键点”开始”->windows系统->命令提示符->右键->更多->以管理员身份运行->输入pip install selenium回车即可安装成功
3
导入以下几个模块(详情请看代码注释)
from selenium import webdriver
import time
import datetime
4
登录你的京东账号:
driver = webdriver.Chrome()
driver.set_window_size(1280, 960)
driver.implicitly_wait(0.5)
print(‘start webdriver’)
driver.get(“http://www.jd.com”)
print(‘get web in’)
5
接下来需要登录京东账号,查找’你好,请登录’这个文本内容并点击:
driver.find_element_by_link_text(‘你好,请登录’).click()
time.sleep(10)
print(‘已登录!’)
6
输入你要秒杀的商品网址:
driver.get(‘https://item.jd.com/100003258248.html‘)
7
导入一个时间模块datetime,需要用命令行输入:鼠标右键“开始”->运行->cmd回车->python回车->import datetime回车->datetime.datetime.now()->会打印出现在的时间格式,如datetime.datetime(2019, 6, 19, 18, 27, 31, 626494)->now = datetime.datetime.now()回车->now.strftime(‘%Y-%m-%d %H:%M:%S’)回车->’2019-06-19 18:45:47′
8
设置秒杀时间:
buy_time = ‘2019-06-19 21:08:00’
print(“buy_time” + buy_time + “等待时间到达…”)
9
设置循环,当条件不满足时,一直循环下去,当条件满足时退出循环:
while True: #条件不满足时,一直循环下去
now = datetime.datetime.now() #获取当前实时时间
print(‘当前北京时间: {}’.format(now))
10
监控商品秒杀时间:假如现在时间等于设定的购买时间
if now.strftime(‘%Y-%m-%d %H:%M:%S’) == buy_time:
11
提交订单:
driver.find_element_by_id(‘btn-onkeybuy’).click()
driver.find_element_by_id(‘order-submit’).click()
print(“—–已提交订单—–“)
break #条件满足就退出循环
time.sleep(0.5)
‘btn-onkeybuy’及’order-submit’的获取方法相同,详见下图
12
在pycharm中右键运行,哈哈,你要秒杀的商品是不是已到手了呢,24小时之内付款它就真正的属于你!是不是太爽了~
13
下面是本次的完整代码(优化后的代码可私信索取)
这是一个有温度的公众号
往期精彩回顾Pycharm2019.1.3永久激活
限时分享|观影神器
给IPTV插上翅膀!