python爬虫

爬虫urllib2库的基本使用

浪子不回头ぞ 提交于 2020-03-25 20:53:44
所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。 在Python中有很多库可以用来抓取网页, urllib2库基本使用 。 urllib2 是 Python2.7 自带的模块(不需要下载,导入即可使用) urllib2 官方文档: https://docs.python.org/2/library/urllib2.html urllib2 源码: https://hg.python.org/cpython/file/2.7/Lib/urllib2.py urllib2 在 python3.x 中被改为 urllib.request urlopen #coding=utf-8 # 导入urllib2 库 import urllib2 # 向指定的url发送请求,并返回服务器响应的类文件对象 response = urllib2.urlopen("http://www.cnblogs.com/loaderman/") # 类文件对象支持 文件对象的操作方法,如read()方法读取文件全部内容,返回字符串 html = response.read() # 打印字符串 print html 执行写的python代码,将打印结果 实际上,查看网页 右键选择“查看源代码”,会发现,和打印出来的是一模一样。也就是说,上面的4行代码就已经帮我们网页的全部代码爬了下来。

Python爬虫(二)_urllib2的使用

半世苍凉 提交于 2020-03-25 20:53:25
所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。在Python中有很多库可以用来抓取网页,我们先学习 urllib2 。 urllib2是Python2.x自带的模块(不需要下载,导入即可使用) urllib2官网文档: https://docs.python.org/2/library/urllib2.html urllib2源码 urllib2 在python3.x中被改为 urllib.request urlopen 我们先来段代码: #-*- coding:utf-8 -*- #01.urllib2_urlopen.py #导入urllib2库 import urllib2 #向指定的url发送请求,并返回服务器的类文件对象 response = urllib2.urlopen("http://www.baidu.com") #类文件对象支持文件对象的操作方法,如read()方法读取文件 html = response.read() #打印字符串 print(html) 执行写好的python代码,将打印结果: python2 01.urllib2_urlopen.py 实际上,如果我们在浏览器打上百度主页,右键选择"查看源代码",你会发现,跟我们刚才打印出来的是一模一样的。也就是说,上面的4行代码就已经帮我们把百度的首页的全部代码爬了下来。

异步爬虫

我与影子孤独终老i 提交于 2020-03-25 20:33:50
<!doctype html> 异步爬虫 异步爬虫 基于线程池 搭建模拟网站,基于Flask框架 templates设置如下图,Flask框架只能使用jinja2进行渲染 第二步: 在templates中创建test.html 下面是python搭建Flask框架 #!/usr/bin/env python # -*- coding:utf-8 -*- from flask import Flask,render_template from time import sleep 实例化一个app app = Flask(name) 创建视图函数&路由地址 @app.route('/bobo') def index_1(): sleep(2) return render_template('test.html') @app.route('/jay') def index_2(): sleep(2) return render_template('test.html') @app.route('/tom') def index_3(): sleep(2) return render_template('test.html') if name == "main": #debug=True表示开启调试模式:服务器端代码被修改后按下保存键会自动重启服务 app.run(debug=True)

python爬虫(一)

筅森魡賤 提交于 2020-03-25 15:21:47
从我接触python爬虫开始,断断续续的学习到现在将将入门,已经过去了一个多月了,发现爬虫真的是一项浩瀚的工程,涉及的知识面非常广。我在这里主要是分享一下自己学的东西,同时做个总结。有写错或理解有误的地方欢迎各位大神指正。 什么是爬虫 用通俗易懂的语言来说就是个人写一个程序来模拟浏览器,发送网络请求,获取响应,然后我们把拿到的数据进行处理的一种行为。 http://www.google.com/googlebooks/chrome/big_00.html这个是谷歌一名工程师用漫画的形式写的浏览器原理(请自备梯子)。 爬虫的应用 你可以爬去想要的图片,爬取自己想看的视频等等你想要爬取的数据,只要你能通过浏览器访问的数据都可以通过爬虫获取,这里要有一个信念:只要是网络上有的就一定能爬,没有爬不到的内容只有想不到的内容。爬虫往小的做,可以爬一些简单的文件,如爬豆瓣电影,往大的做,诸如百度搜索,谷歌搜索。 爬虫到底是什么 就像浏览器一样,我们通过浏览器打开网页,获取网页中我们想要的那部分数据。 浏览器打开网页的过程: 当你在浏览器中输入地址后,经过DNS服务器(域名系统服务器,用于解析请求网站的IP地址)找到服务器主机,向服务器发送一个请求,服务器返回一个响应给浏览器结果,包括html,js,css等文件内容,浏览器解析出来最后呈现给用户在浏览器上看到的结果,即网站页面。页面由html

爬虫的简单运用

a 夏天 提交于 2020-03-25 15:07:19
我运用的库为requests python没有自带需自行安装 安装代码 pip install requests 或 pip3 install requests 以访问百度页面为例 代码如下: import requests def gethtml(url): try: r = requests.get(url,timeout=30) r.raise_for_status()#如果状态不是200,引发异常 r.encoding='utf-8'#无论原来是什么编码,都改成utf-8 return r.text,r.content except: return "" url="http://www.baidu.com/" str1,str2=gethtml(url) print(str1) print(len(str1)) print(len(str2)) 注意爬取网站与读入文件一样要做异常处理及使用try-except语句 结果如下: <!DOCTYPE html> <!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always

python3爬虫-分析Ajax,抓取今日头条街拍美图

六眼飞鱼酱① 提交于 2020-03-24 18:45:57
# coding=utf-8 from urllib.parse import urlencode import requests from requests.exceptions import RequestException,Timeout import json from bs4 import BeautifulSoup from pymongo import MongoClient from multiprocessing import Pool import os import string from hashlib import md5 def get_response(url): try: headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36" } # proxies = {'http':'118.11.2.3:8080'} response = requests.get(url, headers=headers, timeout=5) print(url + 'request success') return response except

【Python爬虫学习笔记4】结合Xpath与lxml库解析数据

佐手、 提交于 2020-03-24 11:07:20
在之前的学习中了解了如何使用爬虫向目标服务器发送请求并获取响应,而此后便是要对响应进行处理,这里的处理在爬虫中通常指的是数据解析,即将相应内容数据化以方便我们进行有效数据的提取。在此过程中,有许多解析数据的方法,本节介绍利用Xpath和lxml库来解析数据。 Xpath Xpath(全称XML Path Language,XML路径语言),是一门在XML和HTML文档中查找信息的语言,它提供了非常简明的路径选择表达式,可用来对网页的元素及属性进行遍历查找。 语法规则: 1.选取节点 XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。 表达式 描述 示例 说明 nodename 选取此节点的所有子节点 div 选取div下所有子节点 / 从当前节点选取直接子节点 /div 从根元素下选取所有div节点 // 从当前节点选取所有子孙节点 //div 从全局节点中选取所有的div节点 @ 选取属性 //a[@class] 选取所有拥有class属性的a节点 . 选取当前节点 .//a 选取当前节点下的所有a节点 .. 选取当前节点的父节点 ..//a 选取当前节点父节点下的所有a节点 2.谓语 谓语用来查找某个特定的节点或者包含某个指定的值的节点,被嵌在方括号中。 表达式 描述 示例 说明 [index] 选取指定序列的节点 /div/p[1] 选取div下的第一个p节点

python爬虫-代理池的维护

*爱你&永不变心* 提交于 2020-03-24 11:06:29
简介 我们可以从网上或者付费获取大量代理,但是这其中很多依然不可用,那么搭建高效的代理池,对代理ip进行筛选是十分必要的 准备工作 : 安装Redis数据库,还需要安装aiohttp、requests、redis-py、pyquery、Flask库,安装流程请百度自行查询 由于文件内容较多,所以就不一一讲解了,直接创建一个Python Package模块包,下次直接调用 创建一个Python Package包,取名为proxypool 一.创建一个setting.py文件,用于存放配置信息。代码如下: # Redis数据库地址 REDIS_HOST = '127.0.0.1' # Redis端口 REDIS_PORT = 6379 # Redis密码,如无填None REDIS_PASSWORD = None REDIS_KEY = 'proxies' # 代理分数 MAX_SCORE = 100 MIN_SCORE = 0 INITIAL_SCORE = 10 VALID_STATUS_CODES = [200, 302] # 代理池数量界限 POOL_UPPER_THRESHOLD = 50000 # 检查周期 TESTER_CYCLE = 20 # 获取周期 GETTER_CYCLE = 300 # 测试API,建议抓哪个网站测哪个 TEST_URL = 'http:/

简单爬虫-爬取免费代理ip

▼魔方 西西 提交于 2020-03-24 11:02:11
环境:python3.6 主要用到模块:requests,PyQuery 代码比较简单,不做过多解释了 #!usr/bin/python # -*- coding: utf-8 -*- import requests from pyquery import PyQuery as pq class GetProxy(object): def __init__(self): # 代理ip网站 self.url = 'http://www.xicidaili.com/nn/' self.header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'} self.file = r'F:\python\code2\get_proxy\proxies.txt' # 用于检查代理ip是否可用 self.check_url = 'https://www.python.org/' self.title = 'Welcome to Python.org' def get_page(self): response = requests.get(self.url, headers=self

Python爬虫的N种姿势

醉酒当歌 提交于 2020-03-24 10:56:11
问题的由来   前几天,在微信公众号(Python爬虫及算法)上有个人问了笔者一个问题,如何利用爬虫来实现如下的需求,需要爬取的网页如下(网址为: https://www.wikidata.org/w/index.php?title=Special:WhatLinksHere/Q5&limit=500&from=0):   我们的需求为爬取红色框框内的名人(有500条记录,图片只展示了一部分)的 名字以及其介绍,关于其介绍,点击该名人的名字即可,如下图: 这就意味着我们需要爬取500个这样的页面,即500个HTTP请求(暂且这么认为吧),然后需要提取这些网页中的名字和描述,当然有些不是名人,也没有描述,我们可以跳过。最后,这些网页的网址在第一页中的名人后面可以找到,如George Washington的网页后缀为Q23.   爬虫的需求大概就是这样。 爬虫的N中姿势   首先,分析来爬虫的思路:先在第一个网页( https://www.wikidata.org/w/index.php?title=Special:WhatLinksHere/Q5&limit=500&from=0 )中得到500个名人所在的网址,接下来就爬取这500个网页中的名人的名字及描述,如无描述,则跳过。   接下来,我们将介绍实现这个爬虫的4种方法,并分析它们各自的优缺点,希望能让读者对爬虫有更多的体会