本人现在是一名实习生,现在在公司实习,之前看到许多人在csdn发表文章,所以呢,我也想发表我自己的文章,把我知道的东西分享给大家。
由于是第一次写,可能写的不是很完善,欢迎大家提些建议哈。下面切入正题:
1.首先需要在自己的电脑上下载python并且安装python的运行环境:下载链接:https://www.python.org/,下载好python,接下来就是安装了,
本人是按照默认安装,读者也可以按照自己的需求自定义安装。之后是配置环境变量:在我的电脑->属性->高级系统设置->环境变量,将你python的安装目录下的
scripts文件配置到环境变量中。最后,在dos下输入python,如果出现如下结果,恭喜你,环境安装完毕。
2下一步我们要安装开发工具,本人用的是PyCharm,安装过程本人就不再叙述了,按照提示安装即可。下面我们需要导入几个爬虫需要的模块,即:BeautifulSoup,requests,cvs,
re,我们用工具来下载,在file->settings->Project->Project interpreter里面点击右面的+下载即可。
3.我们的目的是爬取
https://www.25pp.com/android/soft/fenlei/5021_954/,此网站的app名字,下载量,包名,更新时间
并保存到csv里面
4.下面附上源码:
# coding : UTF-8 import requests import csv import random import time import socket import http.client import os import re from bs4 import BeautifulSoup def get_content (url,data=None): timeout = random.choice(range(80,180)) while True: try: rep = requests.get(url,None,timeout = timeout) rep.encoding = 'utf-8' break except socket.timeout as e: print( '3:', e) time.sleep(random.choice(range(8,15))) return rep.text def get_data(html_text): finalresult = [] soup = BeautifulSoup(html_text, "html.parser") body = soup.body data = body.find('ul',{'class':'app-list clearfix'}).find_all('li') for car in data: temp = [] #包名 pack_id = re.findall('pack_id=(.*);',car['data-stat-exp'])[0] temp.append(pack_id) #app名 app_name = car.find('a')['title'] # title = href.find('title') temp.append(app_name) # 下载量 p = car.find('p',{'class':'app-downs ellipsis'}) num = p['title'] temp.append(num) #分类 kind = body.find_all('ul',{'class':'clearfix'})[1] kind1 = body.find_all('li', {'class', 'active'})[0].find('a').find('span').text kind2 = body.find_all('li', {'class', 'active'})[1].find('a')['title'] #print(kind1+'|'+kind2) k = kind1+'|'+kind2 temp.append(k) #更新日期 a = car.find('a')['href'] url_details = 'https://www.25pp.com' +a soup_details = BeautifulSoup(requests.get(url_details).text,"html.parser") datetime = soup_details.find('div',{'class':'app-detail-info'}).find('p').find('span',{'class':'ellipsis'}).find('strong').text date = re.findall('2017-(.*)', datetime) temp.append(datetime) finalresult.append(temp) return finalresult def write_data(data, name): file_name = name head = tuple(['包名','app名','下载量','分类','更新日期']) with open(file_name, 'a+', errors='ignore', newline='') as f: f_csv = csv.writer(f) if (page == 1): f_csv.writerow(head) f_csv.writerows(data) if __name__ == '__main__': url ='https://www.25pp.com/android/soft/fenlei/5021_954/' for page in range(1,21): url2 = url+str(page)+'/' html = get_content(url2) result = get_data(html) write_data(result, 'car.csv')
5.程序运行完毕部分截图:6.一个简单的入门程序运行完毕。读者如果有什么不懂得,或者需要哪些改进可以留言。