小伙伴有个需求,想识别图片中的数字。正好在研究这方面,所以先做个demo压压惊。
已知一个图片库,分析图片的url比较有规律,很easy,但抓图时发现一直跳转到认证页面,
应该少cookie,加上之搞定。
(在这里提醒句,如果扒图片遇到阻碍,通常都是有办法绕过,<为何大量网站不能抓取?爬虫突破封禁的6种常见方法>http://www.cnblogs.com/junrong624/p/5533655.html
还有这个《反爬虫四个基本策略》http://www.cnblogs.com/junrong624/p/5508934.html)
由于只是测试,所以随机抓了几百张,再啰嗦几句,请求最好不要太频繁,给服务器压力太大,多线程什么的就更要慎重,确实需要可以深夜人少的时候抓。
以下是代码,
import requests
import random
from bs4 import BeautifulSoup
import os
headers = {'User-Agent':"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
"Cookie":"PHPSESSID=6f37dmpn8m63gadp94d70amn15; fixlogin=1; Hm_lvt_8b50e88d65e01e75f6e24de31d23b934=1481994476; Hm_lpvt_8b50e88d65e01e75f6e24de31d23b934=1482055955"}
baidu_headers = {'User-Agent':"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"}
photo_url = 'URL'#替换成目标url
count = 0
os.chdir("D:huipao\")
while count < 200:
count = count + 1
id = random.randint(1,100000)
img_html = requests.get(photo_url+str(id), headers=headers)
img_Soup = BeautifulSoup(img_html.text, 'lxml')
img_url = img_Soup.find('div', class_='item active').find('img')['src']
print(img_url)
img = requests.get(img_url, headers=baidu_headers)
f = open(str(count) + '.jpg', 'ab')
f.write(img.content)
f.close()
else:
print('end')
接下的思路是
1:存一下每张图的识别出的号码值,可能会识别出多个
2:如何遍历这些号码?将这些号码排个序吧,然后顺序查找,hash什么的先算了。
keep on moving