Python爬取网站上的内链和外链

Python爬取网页的所有内外链 用Python爬虫,爬取网页的所有内外链项目介绍代码大纲网站详情代码详情队列内链外链请求头完整代码爬取结果 项目介绍 采用广度优先搜索方法获取一个网站上的所有外链。 首先,我们进入一个网页,获取网页的所有内链和外链,再分别进入内链中,获取该内链的所有内链和外链,直到访问完所有内链未知。 代码大纲 1、用class类定义一个队列,先进先出,队尾入队,队头出队; 2、定义四个函数,分别是爬取网页外链,爬取网页内链,进入内链的函数,以及调函数; 3、爬取百度图片(https://image.baidu.com/) 阅读详情
#%%
# -*- coding: utf-8 -*  
#__author__ = 'Administrat  
#coding=utf-8  
from urllib.request import urlopen  
from urllib.parse import urlparse  
from bs4 import BeautifulSoup  
import re  
import datetime  
import random  
from urllib  import request  
  
pages = set()  
random.seed(datetime.datetime.now())  
  
#sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')  
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}  
  
  
#获取页面所有内链的列表  
def getInternalLinks(bsObj, includeUrl):  
    includeUrl = urlparse(includeUrl).scheme+"://"+urlparse(includeUrl).netloc  
    internalLinks = []  
    #找出所有以“/”开头的链接  
    for link in bsObj.findAll("a", href=re.compile("^(/|.*"+includeUrl+")")):  
        if link.attrs['href'] is not None:  
            if link.attrs['href'] not in internalLinks:  
                if(link.attrs['href'].startswith("/")):  
                    internalLinks.append(includeUrl+link.attrs['href'])  
                else:  
                    internalLinks.append(link.attrs['href'])  
    return internalLinks  
  
#获取页面所有外链的列表  
def getExternalLinks(bsObj, excludeUrl):  
    externalLinks = []  
    #找出所有以“http”或者“www”开头且不包含当前URL的链接  
    for link in bsObj.findAll("a", href=re.compile("^(http|www)((?!"+excludeUrl+").)*$")):  
        if link.attrs['href'] is not None:  
            if link.attrs['href'] not in externalLinks:  
                externalLinks.append(link.attrs['href'])  
    return externalLinks  
  
  
def getRandomExternalLink(startingPage):  
    req=request.Request(startingPage,headers=headers)  
    html=urlopen(req)  
    bsObj=BeautifulSoup(html.read(),"html.parser")  
    externalLinks = getExternalLinks(bsObj, urlparse(startingPage).netloc)  
    if len(externalLinks) == 0:  
        print("没有外部链接,准备遍历整个网站")  
        domain = urlparse(startingPage).scheme+"://"+urlparse(startingPage).netloc  
        internalLinks = getInternalLinks(bsObj, domain)  
        return getRandomExternalLink(internalLinks[random.randint(0,len(internalLinks)-1)])  
    else:  
        return externalLinks[random.randint(0, len(externalLinks)-1)]  
  
def followExternalOnly(startingSite):  
    externalLink = getRandomExternalLink(startingSite)  
    print("随机外链是: "+externalLink)  
    followExternalOnly(externalLink)  
  
#收集网站上发现的所有外链列表  
allExtLinks = set()  
allIntLinks = set()  
def getAllExternalLinks(siteUrl):  
    domain = urlparse(siteUrl).scheme+"://"+urlparse(siteUrl).netloc  
    internalLinks = getInternalLinks(bsObj,domain) 
    externalLinks = getExternalLinks(bsObj,domain)  
    
    f = open('result.txt','w')
    #收集外链  
    for link in externalLinks:  
        if link not in allExtLinks:  
            allExtLinks.add(link)  
            #print(link)
            f.writelines(link+'\n')
            print("即将获取的外部链接的URL是:"+link)  
    #收集内链  
    for link in internalLinks:  
        if link not in allIntLinks:  
            print("即将获取内部链接的URL是:"+link)
            allIntLinks.add(link)  
            getAllExternalLinks(link)
            f.writelines(link+'\n')
  
#followExternalOnly("http://bbs.3s001.com/forum-36-1.html")  
#allIntLinks.add("http://bbs.3s001.com/forum-36-1.html")  
getAllExternalLinks("http://www.zzu.edu.cn/")  

python脚本爬取字体文件的实现方法 这篇文章主要给大家介绍了利用python脚本爬取字体文件的实现方法,文中分享了爬取两个不同网站的示例代码,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。 前言 大家应该都有所体会,为了提高验证码的识别准确率,我们当然要首先得到足够多的测试数据。验证码下载下来容易,但是需要人脑手工识别着实让人受不了,于是我就想了个折衷的办法——自己造验证码。 为了保证多样性,首先当然需要不同的字模了,... 阅读详情

相关推荐

python爬虫(2.获取网页外链与内链)

from urllib.request import urlopen from urllib.parse import urlparse from bs4 import BeautifulSoup import re import datetime import random pages = set() random.seed(datetime.datetime.now()) #获取页面内链

dawen1937的博客 1909

chatgpt赋能python:用Python自动爬取链接的内容——提升SEO效果的利器

Python是一种功能强大、易于上手的编程语言,可应用于多种任务中,包括自动爬取和处理网络数据。Python爬取通常用于自动从网络页面上爬取或提取笔记“页面元素”—这些元素包含在HTML(网页标记语言)格式的文档中,HTML是构成绝大部分网页的一种语言。页面元素包括文本、图片、链接、视频和音频等。通过使用Python爬取技术,您可以找到和提取这些页面元素,以便更轻松地获取网站内容并补充您的页面。本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt。

m0_56069948的博客 539

链家二手房信息爬取(内附完整代码)

链家二手房信息爬取1.简介2. 爬虫思路2.1 网页分析2.2 详情页分析2.3 不同页码的爬取2.4 解决链家只显示100页数据2.5 简单的反爬与进度条显示3. 总结 1.简介   最近帮同学爬取了链家在售二手房的信息,这是本人学习爬虫以来爬取数据最多的一次,就想着写个博客记录一下。   本次爬虫是利用python+jupyter notebook实现的,用到的第三方库如下: import pandas as pd # 数据存储 import requests # 网页内容获取 import re #

qq_46256922的博客 3万+

python爬虫获取网页的外链和内链(巨详细)

xxx = {scheme(网络协议),netloc(服务器位置),path(路径),params(参数),query(查询条件),fragment(片段)}.......这个正则表达式弄了半天也搞不懂,这里我就理解为匹配includeUrl+以/开头的内链接 或者 是以/开头的链接。内链:同一网站域名下的内容页面之间的互相链接(自己网站的内容链接到自己网站的内部页面,也称之为站内链接)外链:在自己的网站导入别人的网站(比如有些网站加入了百度这个链接,而百度就是这个网站的外链)

weixin_65525703的博客 3878

用python爬取需要登录的网站

如何爬取需要登录的网站创建一个session用fiddler抓取请求参数输入模拟浏览器发起请求获取userkey备用登录后,开心地请求该网站的其他页面 假如要爬取某个网页,但是该网页要登录后才能进行访问,刚好登录的时候不需要验证码,那么可以用如下方法 创建一个session 当用浏览器登录网站后,服务器会自动创建一个session对象,在session的有效期内,session对象中的变量在整个用...

qq_38735475的博客 2万+

python爬虫——通过API爬取动态网站的数据

在我前面的博客中,通过利用python的requests库和BeautifulSoup库对静态网站进行爬取,但如果遇到动态网站怎么办呢?接下来我们试着通过API来对动态网站进行爬取想要的数据。 目录(一) 动态网站和静态网站的区别与robots.txt(二) 爬取QQ音乐——“雨爱”的一页评论(三) 爬取QQ音乐——“雨爱”的多页评论 (一) 动态网站和静态网站的区别与robots.txt 在爬取...

DA1YuH 的博客 9288

Python文件下载爬虫,解析如何跳转真实下载链接下载文件素材

爬虫是python的拿手好戏,应用python可以很方便的获取到我们需要的资源,文件内容也是可以获取到的,时间与你想要获取到的资源以及网速有关,拒绝嘴炮,实战说话,这里以一个网站撸一把为例...

二爷记 3322

python爬取链家北京二手房信息(BeautifulSoup)

2022.3.21更新:本博客当时写的时候链家网页中一些属性或需要的信息名称都与参考博客不同,网站中的结构等会经常变化,因此如果直接使用本博客代码可能会导致采集不到需要信息,csv文件为空的情况,希望各位看懂本博客后再去网站根据各自需要和网站此时的设置等修改代码,爬取信息。 一、准备 使用的包有:urllib.request、bs4、pandas、numpy、re、time urllib.request:用来打开和浏览url中内容 bs4:爬取网页 pandas:生成数据表,并保存为csv文件

苍白的小包叽的博客 3509

python多级网址爬取_【Python】 获取url的多级域名

import refrom urlparse import urlparseclass ExtractLevelDomain():def __init__(self):self.topHostPostfix = ['.com','.la','.io','.co', '.cn','.info','.net', '.org','.me','.mobi', '.us', '.biz','.xxx', '...

weixin_39940344的博客 481

用Python爬取2020链家杭州二手房数据

参考着17年这位老兄写的代码:https://blog.youkuaiyun.com/sinat_36772813/article/details/73497956?utm_medium=distribute.pc_relevant.none-task-blog-title-3&spm=1001.2101.3001.4242 在此感谢 1.导入库及准备工作 主要用到了三个库,分别用于获取、解析、和操作excel #_*_coding:utf-8_*_ # 导入开发模块 import requests # 用

cookie_xq的博客 2345

python 爬虫实践 (爬取链家成交房源信息和价格)

简单介绍 简单介绍下,我们需要用到的技术,python 版本是用的pyhon3,系统环境是linux,开发工具是vscode;工具包:request 爬取页面数据,然后redis 实现数据缓存,lxml 实现页面数据的分析,提取我们想要的数据,然后多线程和多进程提升爬取速度,最后,通过celery 框架实现分布式爬取,并实际部署下,下面就按这个逻辑顺序,进行介绍; request爬取页面数据...

caca95的博客 2万+

Python第一个爬虫,简单爬起网页中超链接

1、安装beautifulsoup4库 python -m pip install beautifulsoup4 或者使用源码安装 C:\Users\Administrator\Desktop\Test_Python>python -c “import bs4” 2、查看要爬取网页结构 可以发现里面有href属性的标签名有link或者a,那么在抓取地址的时候这两种情况都要考虑到… 3、编写...

Lissen_Gan的博客 2335

【Python网络爬虫】爬取网站图片实战

本文简要介绍如何利用Python爬取网站数据图片,仅供学习交流。

jackson_lingua的博客 1722

python爬取整个网站_Python爬取网站上的内链和外链

#%%# -*- coding: utf-8 -*#__author__ = 'Administrat#coding=utf-8from urllib.request import urlopenfrom urllib.parse import urlparsefrom bs4 import BeautifulSoupimport reimport datetimeimport randomfro...

weixin_39730263的博客 546

python数据处理与分析案例,python如何进行数据处理

大家好,本文将围绕基于python的数据处理案例展开说明,python数据处理与分析案例是一个很多人都想弄明白的事情,想搞清楚python如何进行数据处理需要先了解以下几个事情。大家好,小编来为大家解答以下问题,python数据处理案例步骤及其代码,python数据处理与分析教程,今天让我们一起来看看吧!哈喽~今天学习记录的是数据分析实训小案例。就用这个案例来好好巩固一下 python 数据分析三剑客。

a17348的博客 1239

SRT公网点对点传输及搭建SRT流媒体服务器

SRT是一种开源传输技术,它是基于UDP协议的,与RTMP不同的是,它具有高码率低延迟的传输特性,加强了在复杂不稳定网络环境中的传输可靠性,提升了不可预测的网络环境上的流传输性能。它不像NDI那样只适用于局域网传输,它更适用于公网环境下的信号传输。 S代表Secure,即安全加密的视频流,R代表Reliable,即具有从数据严重丢包中恢复的可靠性,T代表Transport,即动态适应变化的网络状况。 在音视频数据包传输的过程中,SRT会检测并适应两个传输点之间的实时网络状况,有助于补偿由于网络的拥塞而引起的

罗宇。的媒体技术工作室 1万+

python爬虫爬取网站新闻内容植入mysql数据库内案例demo

python爬虫爬取网站新闻内容植入mysql数据库内案例demo!带简单的标签过滤操作。

yrldjsbk的博客 482

投研必备工具:Wind(万得)数据库快速入门

Wind数据库对于金融从业者来说是必不可少的一个软件,本文主要介绍了股票和债券的信息查找,帮助后续对数据进行分析,开始学习吧!

weixin_56581108的博客 10万+

python基础教程网易云_手把手教你用Python网络爬虫获取网易云音乐歌曲|python基础教程|python入门|python教程...

https://www.xin3721.com/eschool/pythonxin3721/前天给大家分享了用Python网络爬虫爬取了网易云歌词,在文尾说要爬取网易云歌曲,今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地。跟着小编运行过代码的筒子们将网易云歌词抓取下来已经不再话下了,在抓取歌词的时候在函数中传入了歌手ID和歌曲名两个参数,其实爬取歌曲也是同样...

weixin_39581845的博客 181

F280049C Crossbar X-BAR

X-BAR不是一个功能模块,只起内部外设与外设之间,或内部外设与GPIO的连接作用。配置X-BAR的就是在配置信号之间的连接。确实如这一节的开头所言,X-BAR提供了以各种配置连接设备输入、输出和内部资源的灵活性。学完这一节也知道为什么crossbar(X-BAR)的中文翻译是交叉开关。

xht2403267701的博客 3048

UDS诊断服务基础详解之七-31服务

本节内容主要是讲解诊断服务中的31服务,包含31服务的使用场景,请求报文格式,响应报文格式,以及举例对31服务进行相关的说明

车载网络小D的博客 5629

【爬虫实践】用递归获取网站的所有内链和外链

【爬虫实践】用递归获取网站的所有内链和外链 环境:Windows7 +Python3.6+Pycharm2017 目标:从一个网站的顶层开始,爬取该网站所有内链和外链,便于绘制网站地图! 通常网站的深度有5层左右的网页,广度有10个网页,所有大部分网站的页面数量都在10的5次方,就是10万个以内,但是python递归默认限制是1000,这就需要用sys模块的设置突破1000的限制。为了运行控制方便...

mysm123456789的博客 3151

『杭电1199』Color the Ball

Problem Description There are infinite balls in a line (numbered 1 2 3 ....), and initially all of them are paint black. Now Jim use a brush paint the balls, every time give two integers a b and follow by a char 'w' or 'b', 'w' denotes the ball from a to

漠宸离若的博客 498

爬虫实战:链家租房数据爬取,实习僧网站数据爬取

前面已经进行了爬虫基础部分的学习,于是自己也尝试爬了一些网站数据,用的策略都是比较简单,可能有些因素没有考虑到,但是也爬取到了一定的数据,下面介绍两个爬过的案例。 爬虫实战链家网站爬取实习僧网站爬取 链家网站爬取 链家网站的爬取不难,我爬取的主要是租房数据,看一下页面: 我需要爬取的字段有房子的名称,小区,面积,朝向,户型,以及房租。 代码比较简单,主要使用了requests和xpath进行爬取...

NotFound_error的博客 3348

【异常】Claude Code 在 Windows CMD 中出现重影现象的排查与解决

Windows CMD运行Claude Code时出现文字重影、乱码等问题,原因是传统CMD对现代ANSI终端控制序列支持不足。解决方案包括:1)推荐安装Windows Terminal(完全支持ANSI标准);2)使用PowerShell 7;3)优化CMD设置(启用虚拟终端、UTF-8编码);4)关闭Claude Code视觉特效。建议优先使用Windows Terminal以获得最佳体验,这是最彻底的解决方案。其他方案仅能部分改善或缓解问题。

奶爸的编程之路,也就一周冷个三天 1963

基于STM32、HAL库的ATMXT1066TD触摸屏控制器驱动程序设计

0x11) // 0x11是ATMXT1066的家族ID。// 最多支持10点触摸。// 足够存储10点触摸数据。

corlin6688的博客 164
上一篇: Python层次聚类sci.cluster.hierarchy.linkage函数详解
下一篇: Python中的三目运算符
DiamondTan-覃
博客等级 码龄11年 148粉丝 93原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值