Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >排除外部链接,仅在python中使用BeautifulSoup抓取内部链接

排除外部链接,仅在python中使用BeautifulSoup抓取内部链接
EN

Stack Overflow用户
提问于 2020-06-23 22:11:44
回答 1查看 443关注 0票数 0

要从中获取链接的网站- http://hindi-movies-songs.com/films/index-previous-listen.html

我想得到一个列表的所有网页上的链接和他们的内部.mp3链接(aapx 20K链接),例如父链接:http://hindi-movies-songs.com/films/index-previous-listen.html这里面有14个链接,这有更多的链接,等等。有一个看起来很清楚:第一个链接在父级:http://hindi-movies-songs.com/films/index-listen-20131118.html 1.1.1链接:http://hindi-films-songs.com/main/roberto-48.html现在,我需要1.1.1下的所有链接,依此类推,所以有3个级别的页面被抓取。问题是在每个页面的末尾都有链接到主页,这是不被抓取的,我如何在每个级别排除它?

我的代码是-

代码语言:javascript
运行
AI代码解释
复制
import requests
from urllib.request import urlparse, urljoin
from bs4 import BeautifulSoup
import colorama

# init the colorama module
colorama.init()

GREEN = colorama.Fore.GREEN
GRAY = colorama.Fore.LIGHTBLACK_EX
RESET = colorama.Fore.RESET

# initialize the set of links (unique links)
internal_urls = set()


total_urls_visited = 0


def is_valid(url):
    """
    Checks whether `url` is a valid URL.
    """
    parsed = urlparse(url)
    return bool(parsed.netloc) and bool(parsed.scheme)


def get_all_website_links(url):
    """
    Returns all URLs that is found on `url` in which it belongs to the same website
    """
    # all URLs of `url`
    urls = set()
    # domain name of the URL without the protocol
    domain_name = urlparse(url).netloc
    soup = BeautifulSoup(requests.get(url).content, "html.parser")
    for a_tag in soup.findAll("a"):
        href = a_tag.attrs.get("href")
        if href == "" or href is None:
            # href empty tag
            continue
        # join the URL if it's relative (not absolute link)
        href = urljoin(url, href)
        parsed_href = urlparse(href)
        # remove URL GET parameters, URL fragments, etc.
        href = parsed_href.scheme + "://" + parsed_href.netloc + parsed_href.path
        if not is_valid(href):
            # not a valid URL
            continue
        if href in internal_urls:
            # already in the set
            continue
        print(f"{GREEN}[*] Internal link: {href}{RESET}")
        urls.add(href)
        internal_urls.add(href)
    return urls


def crawl(url, max_urls=50):
    """
    Crawls a web page and extracts all links.
    You'll find all links in `external_urls` and `internal_urls` global set variables.
    params:
        max_urls (int): number of max urls to crawl, default is 50.
    """
    global total_urls_visited
    total_urls_visited += 1
    links = get_all_website_links(url)
    for link in links:
        if total_urls_visited > max_urls:
            break
        crawl(link, max_urls=max_urls)


if __name__ == "__main__":
    import argparse
    parser = argparse.ArgumentParser(description="Link Extractor Tool with Python")
    parser.add_argument("url", help="The URL to extract links from.")
    parser.add_argument("-m", "--max-urls", help="Number of max URLs to crawl, default is 50.", default=50, type=int)
    
    args = parser.parse_args()
    url = args.url
    max_urls = args.max_urls

    crawl(url, max_urls=max_urls)

    print("[+] Total Internal links:", len(internal_urls))
    print("[+] Total URLs:", len(internal_urls))

    domain_name = urlparse(url).netloc

    # save the internal links to a file
    with open(f"{domain_name}_internal_links.txt", "w") as f:
        for internal_link in internal_urls:
            print(internal_link.strip(), file=f)

href!="http://hindi-movies-songs.com/index.html"放在空标记条件中没有帮助

有什么解决方案吗?

EN

回答 1

Stack Overflow用户

发布于 2020-06-24 16:36:01

href不在"http://hindi-movies-songs.com/index.html“works for me”中

代码语言:javascript
运行
AI代码解释
复制
import requests
from urllib.request import urlparse, urljoin
from bs4 import BeautifulSoup
import lxml
url = "http://hindi-movies-songs.com/films/index-previous-listen.html"
urls = set()
soup = BeautifulSoup(requests.get(url).content, "lxml")
for a_tag in soup.findAll("a"):
    if a_tag['href'] not in ["http://hindi-movies-songs.com/index.html"]:
        print(a_tag.get('href'))

输出为:

代码语言:javascript
运行
AI代码解释
复制
http://hindi-movies-songs.com/films/index-listen-20131118.html
http://hindi-movies-songs.com/films/index-listen-20121231.html
http://hindi-movies-songs.com/films/index-listen-20120327.html
http://hindi-movies-songs.com/films/index-listen-20110831.html
http://hindi-movies-songs.com/films/index-listen-20101215.html
http://hindi-movies-songs.com/films/index-listen-20100404.html
http://hindi-movies-songs.com/films/index-listen-20091201.html
http://hindi-movies-songs.com/films/index-listen-20090611.html
http://hindi-movies-songs.com/films/index-listen-20090105.html
http://hindi-movies-songs.com/films/index-listen-20080523.html
http://hindi-movies-songs.com/films/index-batch4.html
http://hindi-movies-songs.com/films/index-batch3.html
http://hindi-movies-songs.com/films/indexbatch2.html
http://hindi-movies-songs.com/films/index11to25.html
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62544520

复制
相关文章
C++编译与链接(2)-浅谈内部链接与外部链接
发现每次写技术博客时,都会在文章开头处花费一番功夫 ...从前,有一个程序员....他的名字叫magicsoar 为什么有时会出现aaa已在bbb中重定义的错误? 为什么有时会出现无法解析的外部符号?
magicsoar
2018/02/06
4K2
C++编译与链接(2)-浅谈内部链接与外部链接
Hive应用:外部表链接内部表 原
我们知道,Hive的外部表可以连接HDFS中的任何目录的数据,那么Hive的外部表是否可以连接本身的内部表的数据呢?
云飞扬
2019/03/13
9610
Hive应用:外部表链接内部表
                                                                            原
python - 抓取页面上的链接
除了C/C++以外,我也接触过不少流行的语言,PHP、java、javascript、python,其中python可以说是操作起来最方便,缺点最少的语言了。
phith0n
2020/10/15
2.9K0
python使用urllib2抓取防爬取链接
写了那么多篇找工作的文章,再写几篇就完了,也算是对自己一段时间的一个总结。近来发现自己博客上python技术点的文章有点少,为了防止自己总是遗忘,还是写出来的好。
the5fire
2019/02/28
8210
解决 mklink 使用中的各种坑(硬链接,软链接/符号链接,目录链接)
2018-03-08 12:23
walterlv
2018/09/18
32.7K0
关于友情链接或者其他外部链接的建议
网站增加互换友链或者单相挂载他人友链是一件很正常的事,但是要做到极致,且收益最大化里面的门道还是有点的
Parker
2020/07/22
6680
关于友情链接或者其他外部链接的建议
EasyC++48,内部链接性和无链接性
当我们使用static关键字,将变量的作用于限制在整个文件时,该变量的链接性为内部链接性。在多文件的程序当中,内部链接性和外部链接性是有所差别的,内部链接性的变量只能在当前文件使用,而常规外部变量是可以跨文件使用的。
TechFlow-承志
2022/08/26
2120
html中超链接使用_HTML超链接代码
html超链接的写法是e69da5e6ba903231313335323631343130323136353331333431353431使用a标签,如:百度一下,你就知道。
全栈程序员站长
2022/09/18
1.3K0
使用 jQuery 在新窗口打开外部链接
我们一般都希望在新窗口打开外部链接,这样用户就不需要离开网站就能访问外部链接,但是如果每个外部链接都手工加上新窗口打开的属性(target="_blank")的话,会让人非常抓狂。使用 jQuery,我们只需要几行代码就能在新窗口中打开外部链接。
Denis
2023/04/15
2.7K0
uniapp打开外部链接方式
window.location.href = res.data.short_click_url
凯哥Java
2022/12/16
4.7K0
uniapp打开外部链接方式
如何抓取页面中可能存在 SQL 注入的链接
自动化寻找网站的注入漏洞,需要先将目标网站的所有带参数的 URL 提取出来,然后针对每个参数进行测试,对于批量化检测的目标,首先要提取大量网站带参数的 URL,针对 GET 请求的链接是可以通过自动化获取的,而 POST 型参数提交的方式,则需要手工点击,然后代理抓取数据包再进行提交测试。
信安之路
2021/08/25
2.5K0
Linux中的链接文件_软链接和硬链接
一、链接文件介绍 Linux操作系统中的“链接文件”分为硬链接(hard link)和软链接(symbolic link)。两种链接的本质区别在于inode。以下是详细介绍: 硬链接:当系统要读取一个文件时,会先读inode信息,然后再根据inode中的信息到块领域将数据取出来。而硬链接是直接再建立一个inode链接到文件放置的块领域,即进行硬连接时该文件内容没有任何变化,只是增加了一个指向这个文件的inode,并不会额外占用磁盘空间。硬链接有两个限制: 不能跨文件系统,因为不同的文件系统有不同的inode
Zoctopus
2018/06/04
6.7K0
Python爬虫实战-抓取《盗墓笔记》所有章节及链接
本次以一个盗墓笔记的小说阅读网(http://seputu.com)为例,抓取盗墓笔记的标题、章节名和链接,如下图 前提: 这是一个静态网站,标题、章节都不是由JavaScript动态加载的,无代理,
爱吃西瓜的番茄酱
2018/04/04
1.8K0
Python爬虫实战-抓取《盗墓笔记》所有章节及链接
Linux中的链接文件_软链接和硬链接
一、链接文件介绍 Linux操作系统中的“链接文件”分为硬链接(hard link)和软链接(symbolic link)。两种链接的本质区别在于inode。以下是详细介绍: 硬链接:当系统要读取一个文件时,会先读inode信息,然后再根据inode中的信息到块领域将数据取出来。而硬链接是直接再建立一个inode链接到文件放置的块领域,即进行硬连接时该文件内容没有任何变化,只是增加了一个指向这个文件的inode,并不会额外占用磁盘空间。硬链接有两个限制: 不能跨文件系统,因为不同的文件系统有不同的inode
Zoctopus
2018/06/20
7K0
SEO-外部链接类型以及标准
外部链接 外链的作用:宣传你的网站 相信大家都听过“内链为王,外链为皇”这句话,不管这句话对不对,从这句话上面,我们都能体会到外链的重要性。 外链类型: 1.博客 2.论坛 3.分类信息(分类目录,友情链接平台) 4.百科类 5.社区平台 6.视频外链 7.网盘外链 8.问答类 9.B2B平台 10.资源下载类 11.新闻源 博客---现在玩博客的也有很多,通过建立博客,可以实时的发布一些相关的信息,在信息里面带上外链,也是一种不错的方法。 论坛---有很多SEOER喜欢逛论坛,在论坛发帖,带上链接,或者
用户1112962
2018/07/03
9280
使用Python和BeautifulSoup抓取亚马逊的商品信息
Beautiful Soup 是一个 Python 库,可让您轻松地从 HTML 页面中提取数据。它可以使用各种解析器解析 HTML,例如内置的 Python 解析器、lxml 或 html5lib。 Beautiful Soup 可以帮助您通过标签、属性或文本内容找到特定元素。您还可以使用 .parent、.children 或 .next_sibling 等方法导航 HTML 树结构。 Beautiful Soup 对于网络抓取很有用,因为它可以获取 URL 的内容,然后解析它以提取您需要的信息。例如,您可以使用 Beautiful Soup 从亚马逊网站上抓取商品的标题、价格等信息。
jackcode
2023/05/31
1.6K0
使用Python和BeautifulSoup抓取亚马逊的商品信息
python超链接格式_Openpyxl中的超链接样式「建议收藏」
from openpyxl.styles import Font, Color, colors
全栈程序员站长
2022/09/09
2.4K0
使用BeautifulSoup解析豆瓣网站的HTML内容并查找图片链接
爬取豆瓣网图片的用途广泛。首先,对于雕塑和学者来说,爬取豆瓣图片可以用于文化研究、社会分析等领域。通过分析用户上传的图片,可以了解不同文化背景下的审美趋势和文化偏好,为相关研究提供数据支持。
小白学大数据
2023/10/23
3780
链接 动态链接 静态链接
要想了解底层,链接是一个不得不过的一关,我总结了下学习的心得,首先要了解链接器到底是如何工作的,链接器分为两类,一个是静态链接,一个是动态链接,先来讲解静态链接,静态链接要干两件事:
gzq大数据
2021/09/26
3K0
h5链接跳转到小程序_微信无法跳转外部链接
最近项目有个需求,在微信小程序中跳转外部链接完成相关的操作,操作完成后返回微信小程序的相关页面。
全栈程序员站长
2022/09/21
1.8K0
h5链接跳转到小程序_微信无法跳转外部链接

相似问题

Python BeautifulSoup -从页面抓取内部链接

22

用BeautifulSoup + Python抓取href内部的超链接

15

使用BeautifulSoup在Python中抓取href链接

111

抓取:存储所有外部链接并抓取所有内部链接

21

BeautifulSoup抓取多个链接

118
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文