当前位置:首页 > 科技  > 软件

文本抓取利器,Python和Beautiful Soup爬虫助你事半功倍

来源: 责编: 时间:2023-12-09 15:21:57 363观看
导读一、简介网络爬虫是一项非常抢手的技能。收集、分析和清洗数据是数据科学项目中最重要的部分。今天介绍如何从链接中爬取高质量文本内容,我们使用迭代,从大约700个链接中进行网络爬取。如果想直接跳转到代码部分,可以在

一、简介

网络爬虫是一项非常抢手的技能。收集、分析和清洗数据是数据科学项目中最重要的部分。dCd28资讯网——每日最新资讯28at.com

今天介绍如何从链接中爬取高质量文本内容,我们使用迭代,从大约700个链接中进行网络爬取。dCd28资讯网——每日最新资讯28at.com

如果想直接跳转到代码部分,可以在下方链接GitHub仓库中找到,同时还会找到一个包含将爬取的700个链接的.csv数据集!dCd28资讯网——每日最新资讯28at.com

【GitHub】:https://github.com/StefanSilver3/MediumArticlesCode-byStefanSilver/tree/main/WebScrapingdCd28资讯网——每日最新资讯28at.com

二、从单个链接进行网页抓取

首先,导入所需的库。dCd28资讯网——每日最新资讯28at.com

from bs4 import BeautifulSoupimport requestsfrom bs4.element import Commentimport urllib.request

如果还没有安装BeautifulSoup库,可以直接在Python代码中这样做。dCd28资讯网——每日最新资讯28at.com

pip install beautifulsoup4

然后,开始编码。这里定义两个函数,一个用于检查要排除的内容,另一个用于从网站上爬取内容。dCd28资讯网——每日最新资讯28at.com

第一个函数用于查找要排除的元素,代码如下。dCd28资讯网——每日最新资讯28at.com

# 要从提取的文本中过滤的标签def tag_visible(element):    if element.parent.name in ['style', 'script', 'head', 'title', 'meta', '[document]']:        return False    if isinstance(element, Comment):        return False    return True

第二个函数将使用这个函数,以确保所有的无用内容都从最终结果中排除,代码如下。dCd28资讯网——每日最新资讯28at.com

# 从网页文本中过滤前一个函数中提到的所有标签的函数def text_from_html(body):    soup = BeautifulSoup(body, 'html.parser')    texts = soup.findAll(string=True)    visible_texts = filter(tag_visible, texts)      return u" ".join(t.strip() for t in visible_texts)

接着,可以在一个新链接上测试这两个函数。你可以放置任意链接,不需要使用下面的链接。dCd28资讯网——每日最新资讯28at.com

html = urllib.request.urlopen('https://www.artificialintelligence-news.com/2023/11/20/microsoft-recruits-former-openai-ceo-sam-altman-co-founder-greg-brockman/').read()print(text_from_html(html))

网络爬取的内容将会像下面的文本一样。dCd28资讯网——每日最新资讯28at.com

图片图片dCd28资讯网——每日最新资讯28at.com

截图1:爬取的网站——随机链接dCd28资讯网——每日最新资讯28at.com

注意,一些网站会检测到网络爬取活动,并阻止网络爬取尝试。如果发生这种情况,将收到一个403错误,这是“禁止”的代码。dCd28资讯网——每日最新资讯28at.com

三、同时爬取多个链接

测试了简单的提取函数,接下来对提供的链接数据集的所有链接进行迭代提取。dCd28资讯网——每日最新资讯28at.com

首先,确保获取了在GitHub仓库中找到的数据集。然后,读取数据集并将列名更改为Link,原本的列名是max(page)。dCd28资讯网——每日最新资讯28at.com

df = pd.read_csv("furniture_stores_pages.csv")df.rename(columns={"max(page)":"Link"}, inplace=1)

现在,创建一个以0为起始值的变量x,它将在列表中的每个链接上进行迭代。当然元素变量也可以使用。dCd28资讯网——每日最新资讯28at.com

x=0df_cnotallow=[]for element in df.iterrows():    try:        url = df["Link"][x]        scraped_text = urllib.request.urlopen(url).read()        df_contents.append(text_from_html(scraped_text))        x=x+1    except:        print("(",x,")","This website could not be scraped-> ",df["Link"][x])        x=x+1

然后,定义一个名为df_contents的列表,它将包含从每个网页中提取的所有可以爬取的文本。dCd28资讯网——每日最新资讯28at.com

接下来,遍历每个元素,如果可以访问且包含相关数据,就从中提取信息。这只是对随机链接进行上述测试,但测试的对象是提供的数据集中的所有链接。dCd28资讯网——每日最新资讯28at.com

代码中还使用了try-except对无法提取的链接进行跳过。dCd28资讯网——每日最新资讯28at.com

现在,检查新列表(df_contents)的长度,查看提取了多少链接。dCd28资讯网——每日最新资讯28at.com

len(df_contents)

这个函数返回268,这意味着在700多个网站中只有268个爬取成功。然后,可以使用下面的代码访问并打印第一个被爬取的网站。dCd28资讯网——每日最新资讯28at.com

df_contents[0]

这将打印第一个文本,示例如下所示(简短版本):dCd28资讯网——每日最新资讯28at.com

图片图片dCd28资讯网——每日最新资讯28at.com

截图2:从数据集中爬取的网站dCd28资讯网——每日最新资讯28at.com

如果需要的话,也可以使用下面的代码反复打印。每打印完一个元素后,都需要输入任意字符以继续,这样就可以逐一检查每个提取的网站。dCd28资讯网——每日最新资讯28at.com

count = 0for element in df_contents:    print(df_contents[count])    print("/n /n---------------------------------------------------------------------------------------- /n /n")        print("Press any key to continue to print df_contents [",count+1,"]")    input()    count= count+1

本文链接:http://www.28at.com/showinfo-26-40655-0.html文本抓取利器,Python和Beautiful Soup爬虫助你事半功倍

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 微软:VS Code已成为Java巨头!

下一篇: Java高并发详解,死锁的成因与解决方法

标签:
  • 热门焦点
  • 5月iOS设备好评榜:iPhone 14仅排第43?

    来到新的一月,安兔兔的各个榜单又重新汇总了数据,像安卓阵营的榜单都有着比较大的变动,不过iOS由于设备的更新换代并没有那么快,所以相对来说变化并不大,特别是iOS好评榜,老款设
  • 多线程开发带来的问题与解决方法

    使用多线程主要会带来以下几个问题:(一)线程安全问题  线程安全问题指的是在某一线程从开始访问到结束访问某一数据期间,该数据被其他的线程所修改,那么对于当前线程而言,该线程
  • 虚拟键盘 API 的妙用

    你是否在遇到过这样的问题:移动设备上有一个固定元素,当激活虚拟键盘时,该元素被隐藏在了键盘下方?多年来,这一直是 Web 上的默认行为,在本文中,我们将探讨这个问题、为什么会发生
  • 破圈是B站头上的紧箍咒

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之每年的暑期档都少不了瞄准追剧女孩们的古偶剧集,2021年有优酷的《山河令》,2022年有爱奇艺的《苍兰诀》,今年却轮到小破站抓住了追
  • 花7万退货退款无门:谁在纵容淘宝珠宝商家造假?

    来源:极点商业作者:杨铭在淘宝购买珠宝玉石后,因为保证金不够赔付,店铺关闭,退货退款难、维权无门的比比皆是。“提供相关产品鉴定证书,支持全国复检,可以30天无理由退换货。&
  • 微博大门常打开,迎接海外画师漂洋东渡

    作者:互联网那些事“起猛了,我能看得懂日语了”。“为什么日本人说话我能听懂?”“中文不像中文,日语不像日语,但是我竟然看懂了”…&hell
  • 机构称Q2国内智能手机销量同比下滑4% vivo份额重回第1

    7月29日消息,根据市场调查机构Counterpoint Research公布的最新报告,2023年第2季度中国智能手机销量同比下降4%,创新自2014年以来第2季度销量新低。报
  • 联想小新Pad Pro 12.6将要推出,搭载高通骁龙 870 处理器

    联想小新Pad Pro 12.6将于秋季新品会上推出,官方按照惯例直接在发布会前给出了机型的所有参数。联想小新 Pad Pro 12.6 将搭载高通骁龙 870 处理器,重量为 5
  • 英特尔Xe HPG游戏显卡:拥有512EU,单风扇版本

    据10 月 30 日外媒 TheVerge 消息报道,英特尔 Xe HPG Arc Alchemist 的正面实被曝光,不仅拥有 512 EU 版显卡,还拥有 128EU 的单风扇版本。另外,这款显卡 PCB
Top