Py学习  »  Python

用Python写一个简单的网页下载

efore • 3 年前 • 78 次点击  
阅读 9

用Python写一个简单的网页下载

作为一个Python+爬虫的小白,今天要搞点爬虫的活儿,以前没做过,从零开始。 win10的系统,python我的电脑上以前不记得什么时候安装过,安装的是3.6的版本,能用。代码工具,先使用VS code。 先做个简单的爬取网页的demo。 Python3 提供了 urllib 这个标准库,无需安装,即可引用使用:

from urllib import request
复制代码

然后,我们就可以使用urllib发送GET请求了。代码如下:

from urllib import request

req_news = request.Request('https://news.163.com/20/0522/13/FD82KGA1000189FH.html')
req_news.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36')
html_news = request.urlopen(req_news).read()

print('------------')
print(html_news.decode('gbk'))
复制代码

User-Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。 这里在请求头中添加这个是为了模拟浏览器正常请求,很多服务器都会做检测,发现不是正常浏览器的请求会直接拒绝(很多网站不一定有这种检测,但这是最基本的防爬虫策略),当然真实的浏览器发送的请求头里面不仅仅只有一个 UA。浏览器上截图。

12

注意:request.urlopen(req_news).read()里读出来的内容有时候是二进制(bytes)数据,需要进行转换,中文需要用decode转成 GBK 格式,写入时可写入UTF-8格式。
有时候读出来的直接是字符串,可以用encoding转成utf-8

然后,将读出来的页面信息写到一个文件里。python读写文件需要先引入os。

import os
复制代码

读写方恨少和C的比较像。Python文件的读写参看:www.w3school.com.cn/python/pyth…

base_dir = os.getcwd()
#获取当前文件夹的绝对路径
file_name = os.path.join(base_dir, 'data', 'news.html')

#打开fie_name路径下的news.html文件,采用写入模式
#若文件不存在,创建,若存在,清空并写入
my_open = open(file_name, 'w', encoding="utf-8")
#在文件中写入内容
my_open.write(html_news.decode('gbk'))
my_open.close()
复制代码

完整的读写代码如下:

from urllib import request
# from lxml import etree
# import re
import os

req_news = request.Request('https://news.163.com/20/0522/13/FD82KGA1000189FH.html')
req_news.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36')
html_news = request.urlopen(req_news).read().decode('gbk')

print('------------')
print(html_news)

base_dir = os.getcwd()
#获取当前文件夹的绝对路径
file_name = os.path.join(base_dir, 'data', 'news.html')

# print(file_name)

#打开fie_name路径下的news.html文件,采用写入模式
#若文件不存在,创建,若存在,清空并写入
my_open = open(file_name, 'w', encoding="utf-8")
#在文件中写入内容
my_open.write(html_news)

my_open.close()
复制代码

这只是爬虫的第一步,接下来还需要分析网页数据,提取自己想要的内容。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/63227
 
78 次点击