爬虫学习记录1-基本知识,简单进行网页抓取
2018-03-16 15:36
501 查看
由于抓取数据需要,开始接触Python爬虫,这两天也观看了网络上的一些教程,爬虫门槛较低,入手较快。Python爬虫主要用到urllib这个包,获取网站信息。urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)url一定要输入,其余会自动默认。下面是对网站的源码的简单抓取。url = "http://www.jlis.cn" #将网站地址赋值给urlrequest = urllib.request.Request(url) #发送请求response = urllib.request.urlopen(request)#打开网址urldata = response.read()html = data.decode("utf-8")#读出网站源码print(html)较多次访问网站后,网站会发现你是机器访问而不是人为访问,会拒绝你的访问请求,这时要加上header,header有两种添加方法第一种作为参数添加例如,在对有道翻译网页的抓取中,将header建为字典,添加到urllib.request中
import urllib.request import urllib.parse import json content = input("请输入你要翻译的内容:") url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&sessionFrom=" header = {} header["User-Agent"] = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36' data = {} data["i"] = content data["from"] = 'AUTO' data["to"] = 'AUTO' data["smartresult"] = 'dict' data["client"] = 'fanyideskweb' data["salt"] = '1521113606768' data["sign"] = 'e1fb3adb0b4f6746766430de73a2ccf1' data["doctype"] = 'json' data["version"] = '2.1' data["keyfrom"] = 'fanyi.web' data["action"] = 'FY_BY_CLICKBUTTION' data["typoResult"] = 'false' data = urllib.parse.urlencode(data).encode("utf-8") req = urllib.request.Request(url,data,header) response = urllib.request.urlopen(req) html = response.read().decode("utf-8") target = json.loads(html) print("翻译结果为:",target['translateResult'][0][0]['tgt'])第二种,使用add_header,如下req = urllib.request.Request(url)req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36')#headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36'}response = urllib.request.urlopen(req)为了不被网站怀疑,对我们的IP地址进行封号,我们有时候要使用多个IP地址,这里要用到代理IPimport urllib.requestimport randomurl = "http://www.whatismyip.com.tw"iplist = ['49.64.151.177:61202','171.37.42.137:61202']#将网上免费的IP地址存进列表proxy_support = urllib.request.ProxyHandler({'http':random.choice(iplist)})#使用random函数随机选择一个IP地址opener = urllib.request.build_opener(proxy_support)opener.addheaders = [('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36')]urllib.request.install_opener(opener)req = urllib.request.Request(url)response = urllib.request.urlopen(req)html = response.read().decode('utf-8')print(html)
相关文章推荐
- Open CV学习记录(二十二)—图像处理基本知识
- cadence学习:PCB布局基本知识简单介绍
- 【Python3.6爬虫学习记录】(五)Cookie的使用以及简单的爬取知乎
- 概念记录 - 学习时遇到的概念和知识的简单记录
- 【java学习记录】10.实现基本的记事本功能(新建、打开、另存为)和简单的加解密功能
- 【Python3.6爬虫学习记录】(三)简单的爬虫实践-豆瓣《河神》演员图片及姓名
- WebCollector爬虫学习记录(一)爬取国际石油网知识板块
- 【D3D学习记录】入门3D编程的基本数学知识(1)-坐标系
- Android学习记录四(应用程序基本知识)
- 【java学习记录】3.采用面向对象的方法设计一个能对复数(Complex)进行加、减、乘法的简单运算的程序
- arcgis 学习记录 ----> arcmap 导入cad文件,并对地图进行简单处理
- TensorFlow学习记录-- 5.用lstm对手写数字进行识别(待修改,差增加rnn以及lstm的知识)
- Java集合框架的知识总结(1) 说明:先从整体介绍了Java集合框架包含的接口和类,然后总结了集合框架中的一些基本知识和关键点,并结合实例进行简单分析。 1、综述 所有集合类
- 【D3D学习记录】入门3D编程的基本数学知识(2)-向量、线性空间和线性变换
- 【Python3.6爬虫学习记录】(二)使用BeautifulSoup爬取简单静态网页文章
- sql命令语句基本知识学习记录(1)
- python使用百度进行爬虫简单学习例子
- 【Python3.6爬虫学习记录】(一)爬取简单的静态网页图片
- 个人学习android的基本知识记录
- 【Scrapy】学习记录3_编写简单爬虫