避免浪费时间大佬掠过,小白入门精细分解
pc安装python-3.7.3(64位操作系统).exe,使其电脑具备编译python代码的环境。
安装方法:双击软件包,直接下一步下一步,注意需要勾选一下pip与默认自动配置环境变量的选项。否则需要自己手动配置。反正遇到选项就全部勾上就行了。。
win+r快捷键输入cmd调出dos窗口
输入python -V 查看版本
cmd窗口下安装基本库
pip install requests
pip install openpyxl
pip install beautifulsoup4
# 备注:需要一条一条的去安装,,不能全部复制然后去cmd安装
所有命令都是这样输入即可安装。
pip list命令查看是否安装成功.
所有安装的库都能在这里看到。
代码编写工具这里用的python自带的idle
最后点击apply --> ok 应用即可
import requests # 导入 requests库
try:
r = requests.get('http://www.taobao.com') # 使用 get函数打开指定的 url
r.raise_for_status() # 如果状态不是 200 ,则引发异常
r.encoding = 'utf-8' # 更改编码方式
print(r.text) # 用字符串的形式显示页面内容
except:
print("网站连接失败!") # 发生异常则输出 “" 网站连接失败! ”
目标站点前端html代码抓取:
运行代码之后 响应前端代码那么意味着。已经向淘宝服务器发起了一次get请求 ,并得到了响应
如果提示网络连接失败,那么说明requests库安装有问题。。
from contextlib import closing
import re # 正则库
import requests # 导入 requests库
def getHtml(url):
# 发起网络请求获取页面内容
page = requests.get(url)
return page.text
def getJpg(html):
# 使用正则表达式从html中提取图片链接
jpgReg = re.compile(r'<img.+?src="(.+?\.jpg)" width')
jpgs = re.findall(jpgReg, html)
print(jpgs)
return jpgs
def downloadJpg(imgUrl, fileName):
# 从指定链接下载图片并保存到本地
with closing(requests.get(imgUrl, stream=True)) as resp:
with open(fileName, 'wb') as f:
for chunk in resp.iter_content(128):
f.write(chunk)
def batchDownloadJpg(imgUrls, path='./'):
# 批量下载图片到指定路径
count = 1
for url in imgUrls:
downloadJpg(url, ''.join([path, '{0}.jpg'.format(count)]))
print("download {0} img".format(count))
count += 1
def crawlAndDownload(url):
# 爬取网页并下载图片
html = getHtml(url)
jpgs = getJpg(html)
batchDownloadJpg(jpgs)
def main():
url = "https://tieba.baidu.com/p/2256306796"
crawlAndDownload(url)
if __name__ == '__main__':
main()
目标站:
import requests # 导入 requests库
import openpyxl # excel库
from bs4 import BeautifulSoup
def open_url(url):
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
}
res = requests.get(url, headers=headers)
# print(res)
return res
def find_movies(res):
soup = BeautifulSoup(res.text, 'html.parser')
# 电影名
movies = []
targets = soup.find_all("div", class_="hd")
for each in targets:
movies.append(each.a.span.text)
# 评分
ranks = []
targets = soup.find_all("span", class_="rating_num")
for each in targets:
ranks.append(each.text)
# 资料
messages = []
targets = soup.find_all("div", class_="bd")
for each in targets:
try:
messages.append(each.p.text.split('\n')[1].strip() + each.p.text.split('\n')[2].strip())
except:
continue
result = []
length = len(movies)
for i in range(length):
result.append([movies[i], ranks[i], messages[i]])
return result
# 查找的深度
def find_depth(res):
soup = BeautifulSoup(res.text, 'html.parser')
depth = soup.find('span', class_='next').previous_sibling.previous_sibling.text
return int(depth)
def save_to_excel(result):
wb = openpyxl.Workbook() # 建立一个 Excel 工作簿
ws = wb.active # 得到一个 sheet 的页面
ws['A1'] = '电影名称' # 直接给单元格赋值
ws['B1'] = '评分'
ws['C1'] = '资料'
for each in result:
ws.append(each) # 用此函数只能按行写入,从空白行开始
wb.save('豆瓣 TOP250.xlsx')
def main():
host = 'https://movie.douban.com/top250'
res = open_url(host)
depth = find_depth(res)
result = []
for i in range(depth):
url = host + '/?start=' + str(25 * i) # 寻找每页之间的关系,得出每页的 url
res = open_url(url)
result.extend(find_movies(res))
save_to_excel(result)
if __name__ == '__main__':
main()
目标站点:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。