很多人在WIN10下装了python3.6后,用pip install lxml安装这个模块,你会发现出错,根本安装不上,从而在应用BeautifulSoup这个模块受到很大的限制,写爬虫受阻,我今天来教大家一下吧,配置一下PyCharm,再写个示例,来抓它几个G的美女图。
一、安装python
我下载的地址是:https://www.python.org/ftp/python/3.6.3/python-3.6.3-amd64.exe
版本为为3.6.3的64位!
二、安装PyCharm、注册、汉化
下载网址是:https://www.jetbrains.com/zh/pycharm/specials/pycharm/pycharm.html
这儿可以下个专业版,默认安装就行了!
用下图的方式注册即可,注意图中写的网址。网址如果不生效了,请自己网上查找资料吧!这个也很简单!
你再在网上搜索PyCharm汉化包,搜索不到的可以留言问我。把下载到的 resources_cn.jar 放在 C:Program FilesJetBrainsPyCharm 2017.2.4lib 这个目录。
现在你再打开PyCharm,应当已经汉化并注册完毕了。
三、安装 lxml模块
打开pycharm,点击文件,再点击设置。
点击settings之后,再点击project下面的project Interpreter,接下来点击上面界面右上角的“+”:
然后在搜索框中搜索需要安装的第三方库(此处搜索lxml)然后点击界面左下角的Install Package进行安装即可(图1、2)。要注意图1中我选择的是3.6这个python,如果你机器里装有多个python版本,要注意选择。
图1
图2
四、复制我的代码,开始抓美女图
代码我已经写好了,你copy后,最好把 img.py它放在一个目录下再运行;
#encoding=utf-8
import requests
import imp
#import lxml
from bs4 import BeautifulSoup
import os
import re
import sys
imp.reload(sys)
#sys.setdefaultencoding('utf8')
def url_open(url):
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36','Referer':'http://www.mzitu.com/all/'
}
html = requests.get(url, headers=headers)
return html
def find_list(url):
title_list = []
url_list = []
html = url_open(url).content.decode('utf-8')
soup = BeautifulSoup(html, 'lxml')
all_a = soup.find('div',class_='all').find_all('a')
for a in all_a:
title_list.append(a.get_text())
url_list.append(a['href'])
return title_list, url_list
def get_pages(url):
html = url_open(url).content.decode('utf-8')
soup = BeautifulSoup(html, 'lxml')
pages = soup.find('div', class_='pagenavi').select('a > span')[-2].get_text()
#print(pages)
return pages
def find_img(url):
count = 0
all_list = find_list(url)
url_list = all_list[1]
title_list = all_list[0]
print('------------------------start-----------------------')
for num in range(len(url_list)):
try:
os.mkdir(title_list[num])
os.chdir(title_list[num])
pages = int(get_pages(url_list[num]))
page_num = pages
print('now:{0} has:{1} all:{2}'.format(title_list[num], pages, count))
for i in range(pages):
try:
page_num -= i
page_url = url_list[num] + '/' + str(page_num)
html = url_open(page_url).text
soup = BeautifulSoup(html, 'lxml')
img_url = soup.find('div', class_='main-image').find_all('img')[0]['src']
save_img(img_url)
count += 1
page_num = pages
except:
print('------------------------save-error------------------------')
os.chdir('..')
print('------------------------done------------------------')
except:
print('-----------------------enter-error-----------------------')
def save_img(url):
filename = url.split('/')[-1]
with open(filename,'wb') as f:
img = url_open(url).content
f.write(img)
def main():
url = 'http://www.mzitu.com/all/'
find_img(url)
if __name__ == '__main__':
main()
我是把img.py放在D盘的;
运行一下看看,命令行下在当前目录执行:
python img.py
一会功夫抓了好多图,并按目录和时间给你分类保存好了。
什么时间想不抓了,就关掉程序就行了,最后欣赏一张美女图吧!