python爬虫思路及爬虫代理使用方案

laical · 2020-07-24 17:28:49 · 3453 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2020-07-24 17:28:49 的主题,其中的信息可能已经有所发展或是发生改变。

爬虫是一个比较容易上手的技术,也许花5分钟看一篇文档就能爬取单个网页上的数据。但对于大规模爬虫,完全就是另一回事,并不简单,还会衍生出许多别的问题。 爬虫思路 : 下载数据、解析数据、保存数据

今天先分享如何爬取数据和使用代理方案 爬取数据: 抓取大多数情况属于get请求,即直接从对方服务器上获取数据。 首先,Python中自带urllib及urllib2这两个模块,基本上能满足一般的页面抓取。另外,requests也是非常有用的包,与此类似的,还有httplib2等等。 import requests url = http://current.ip.16yun.cn:802 response = requests.get(url) content = requests.get(url).content print("response headers:", response.headers) print("content:", content) 此外,对于带有查询字段的url,get请求一般会将来请求的数据附在url之后,以?分割url和传输数据,多个参数用&连接。 import requests data = {'wd':'nike', 'ie':'utf-8'} url='https://www.baidu.com' response = requests.get(url=url, params=data) 大部分网站都有反爬措施,也就是说网站服务器会根据某个ip在特定时间内的访问频率来判断是否为爬虫,然后把你把你拉进“黑名单”,素质好的给你返回403或者出来个验证码,素质不好的会给你返回两句脏话。 解决方案: ①降低爬虫请求速率,但是会降低效率; ②添加代理ip,代理ip又分为付费的和不要钱的,前者比较稳定,后者经常断线。 添加爬虫代理代码: import requests import random

# 要访问的目标页面
targetUrl = "http://httpbin.org/ip"
# 要访问的目标HTTPS页面
# targetUrl = "https://httpbin.org/ip"
# 代理服务器(产品官网 www.16yun.cn)
proxyHost = "t.16yun.cn"
proxyPort = "31111"
# 代理隧道验证信息
proxyUser = "username"
proxyPass = "password"
proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
    "host" : proxyHost,
    "port" : proxyPort,
    "user" : proxyUser,
    "pass" : proxyPass,
}
# 设置 http和https访问都是用HTTP代理
proxies = {
    "http"  : proxyMeta,
    "https" : proxyMeta,
}
#  设置IP切换头
tunnel = random.randint(1,10000)
headers = {"Proxy-Tunnel": str(tunnel)}
resp = requests.get(targetUrl, proxies=proxies, headers=headers)
print resp.status_code
print resp.text

在一定的爬虫基础上做好相关爬虫优化,加上高质量爬虫代理进行数据采集,才能更高效稳定的采集到数据。15387567-14dfaea2ec539d3d.webp.jpg15387567-14dfaea2ec539d3d.webp.jpg


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3453 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传