Python爬虫获取页面所有URL链接过程详解

微信扫一扫,分享到朋友圈

Python爬虫获取页面所有URL链接过程详解

如何获取一个页面内所有URL链接?在Python中可以使用urllib对网页进行爬取,然后利用Beautiful Soup对爬取的页面进行解析,提取出所有的URL。

什么是Beautiful Soup?

Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。

Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。

BeautifulSoup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,如果我们不安装它,则 Python 会使用 Python默认的解析器,lxml 解析器更加强大,速度更快。

全部代码:

from bs4 import BeautifulSoup
import time,re,urllib2
t=time.time()
websiteurls={}
def scanpage(url):
websiteurl=url
t=time.time()
n=0
html=urllib2.urlopen(websiteurl).read()
soup=BeautifulSoup(html)
pageurls=[]
Upageurls={}
pageurls=soup.find_all("a",href=True)
for links in pageurls:
if websiteurl in links.get("href") and links.get("href") not in Upageurls and links.get("href") not in websiteurls:
Upageurls[links.get("href")]=0
for links in Upageurls.keys():
try:
urllib2.urlopen(links).getcode()
except:
print "connect failed"
else:
t2=time.time()
Upageurls[links]=urllib2.urlopen(links).getcode()
print n,
print links,
print Upageurls[links]
t1=time.time()
print t1-t2
n+=1
print ("total is "+repr(n)+" links")
print time.time()-t
scanpage(http://news.163.com/)

利用BeautifulSoup还可以有针对性的获取网页链接:Python爬虫获取网页上的链接,通过beautifulsoup的findall()方法对匹配的标签进行查找。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间:2020-06-04

Urllib3是一个功能强大,条理清晰,用于HTTP客户端的Python库.许多Python的原生系统已经开始使用urllib3.Urllib3提供了很多python标准库urllib里所没有的重要特性: 线程安全 连接池 客户端SSL/TLS验证 文件分部编码上传 协助处理重复请求和HTTP重定位 支持压缩编码 支持HTTP和SOCKS代理 一.get请求 urllib3主要使用连接池进行网络请求的访问,所以访问之前我们需要创建一个连接池对象,如下所示: import urllib3 url

平时见到的url参数都是key-value, 一般vlaue都是字符串类型的 如果有幸和我一样遇到字典,列表等参数,那么就幸运了 python2代码 import json from urllib import urlencode # 1. 直接将url编码 params = { “name”: “Tom”, “hobby”: [“ball”, “swimming”], “books”:

前言 网络爬虫也称为网络蜘蛛.网络机器人,抓取网络的数据.其实就是用Python程序模仿人点击浏览器并访问网站,而且模仿的越逼真越好.一般爬取数据的目的主要是用来做数据分析,或者公司项目做数据测试,公司业务所需数据. 而数据来源可以来自于公司内部数据,第三方平台购买的数据,还可以通过网络爬虫爬取数据.python在网络爬虫方向上有着成熟的请求.解析模块,以及强大的Scrapy网络爬虫框架. 爬虫分类 1.通用网络爬虫:搜索引擎使用,遵守robots协议(君子协议) robots协议 :网站通过r

urllib模块发起的POST请求 案例:爬取百度翻译的翻译结果 1.通过浏览器捉包工具,找到POST请求的url 针对ajax页面请求的所对应url获取,需要用到浏览器的捉包工具.查看百度翻译针对某个字条发送ajax请求,所对应的url 点击clear按钮可以把抓包工具,所抓到请求清空 然后填上翻译字条发送ajax请求,红色框住的都是发送的ajax请求 抓包工具All按钮代表 显示抓到的所有请求 ,包括GET.POST请求 .基于ajax的POST请求 XHR代表 只显示抓到的基于ajax的P

案例:爬取使用搜狗根据指定词条搜索到的页面数据(例如爬取词条为’周杰伦’的页面数据) import urllib.request # 1.指定url url = ‘https://www.sogou.com/web?query=周杰伦’ ”’ 2.发起请求:使用urlopen函数对指定的url发起请求, 该函数返回一个响应对象,urlopen代表打开url ”’ response = urllib.request.urlopen(url=url) # 3.获取响应对象中的页面数据:read函

所谓网页抓取,就是把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

使用python爬虫库requests,urllib爬取今日头条街拍美图 代码均有注释 import re,json,requests,os from hashlib import md5 from urllib.parse import urlencode from requests.exceptions import RequestException from bs4 import BeautifulSoup from multiprocessing import Pool #请求索引页 d

首先我们先引入requests模块 import requests 一.发送请求 r = requests.get(‘https://api.github.com/events’) # GET请求 r = requests.post(‘http://httpbin.org/post’, data = {‘key’:’value’}) # POST请求 r = requests.put(‘http://httpbin.org/put’, data = {‘key’:’value’}) # PUT请

导入Python爬虫库Requests import requests 一.发送表单数据 要发送表单数据,只需要将一个字典传递给参数data payload = {‘key1’: ‘value1’, ‘key2’: ‘value2’} r = requests.post(“http://httpbin.org/post”, data=payload) print(r.text) {“args”:{},”data”:””,&qu

使用Python爬虫库requests多线程抓取猫眼电影TOP100思路: 查看网页源代码 抓取单页内容 正则表达式提取信息 猫眼TOP100所有信息写入文件 多线程抓取 运行平台:windows Python版本:Python 3.7. IDE:Sublime Text 浏览器:Chrome浏览器 1.查看猫眼电影TOP100网页原代码 按F12查看网页源代码发现每一个电影的信息都在”<dd></dd>”标签之中. 点开之后,信息如下: 2.抓取单页内容 在浏

首先在程序中引入Requests模块 import requests 一.获取不同类型的响应内容 在发送请求后,服务器会返回一个响应内容,而且requests通常会自动解码响应内容 1.文本响应内容 获取文本类型的响应内容 r = requests.get(‘https://www.baidu.com’) r.text # 通过文本的形式获取响应内容 ‘<!DOCTYPE html>rn<!–STATUS OK–><html> <head><m

最近因为项目需求,需要写个爬虫爬取一些题库.在这之前爬虫我都是用node或者php写的.一直听说python写爬虫有一手,便入手了python的爬虫框架scrapy. 下面简单的介绍一下scrapy的目录结构与使用: 首先我们得安装scrapy框架 pip install scrapy 接着使用scrapy命令创建一个爬虫项目: scrapy startproject questions 相关文件简介: scrapy.cfg: 项目的配置文件 questions/: 该项目的python模块.之

下面就是使用Python爬虫库BeautifulSoup对文档树进行遍历并对标签进行操作的实例,都是最基础的内容 html_doc = “”” <html><head><title>The Dormouse’s story</title></head> <p><b>The Dormouse’s story</b></p>

一.Tag(标签)对象 1.Tag对象与XML或HTML原生文档中的tag相同. from bs4 import BeautifulSoup soup = BeautifulSoup(‘<b>Extremely bold</b>’,’lxml’) tag = soup.b type(tag) bs4.element.Tag 2.Tag的Name属性 每个tag都有自己的名字,通过.name来获取 tag.name ‘b’ tag.

一.介绍 BeautifulSoup库是灵活又方便的网页解析库,处理高效,支持多种解析器.利用它不用编写正则表达式即可方便地实现网页信息的提取. Python常用解析库 解析器 使用方法 优势 劣势 Python标准库 BeautifulSoup(markup, “html.parser”) Python的内置标准库.执行速度适中 .文档容错能力强 Python 2.7.3 or 3.2.2)前的版本中文容错能力差 lxml HTML 解析器 BeautifulSoup(markup,

道友问我的一个问题,之前确实没遇见过,在此记录一下. 问题描述 在某网站主页提取url进行迭代,爬虫请求主页时没有问题,返回正常,但是在访问在主页提取到的url时出现了400状态码(400 Bad Request). 结论 先贴出结论来,如果url里有空格的话,要把空格替换成%20,也就是url编码,否则就会出现400. 解决过程 首先百度了一下400状态码什么意思: 400页面是当用户在打开网页时,返回给用户界面带有400提示符的页面.其含义是你访问的页面域名不存在或者请求错误. 主要有两种形

微信扫一扫,分享到朋友圈

Python爬虫获取页面所有URL链接过程详解

LeetCode 238. 除自身以外数组的乘积 | Python

上一篇

挪威一家手机维修店输掉了"假冒"进口iPhone屏幕的法律斗争

下一篇

你也可能喜欢

Python爬虫获取页面所有URL链接过程详解

长按储存图像,分享给朋友