検索

当我们想要从复杂的网络信息中抽取出我们需要的信息时,不假思索的写出层层抽取的代码是非常不理智的。这样的代码又臭又长,难以阅读,且容易失效。正确的方法是三思而后行,使用正确的技巧方法写出简洁,易懂,扩展性强的代码。重要的事情说三遍:三思而后行,三思而后行,三思而后行### 1.class和id抽取网页的class属性和id属性是非常丰富的,我们可以使用这些属性来抽取信息:例子:```from urllib.request import urlopenfrom bs4 import BeautifulSouphtml = urlopen("http://pythonscraping.com/pages/warandpeace.html")#网页html代码赋给变量bs0bjbs0bj = BeautifulSoup(html)#返回一个含有class=green属性的列表namelist = bs0bj.findAll("span",{"class":"green"})#遍历输出列表中不含标签的文字。for name in namelist:	print(name.get_text())```.get_text():把正在处理的html文档中的所有标签都清除,返回一个只包含文字的字符串,一般情况下因尽可能保留标签,在最后情况下使用get_text()。### 2.find()和finaall()find()和finaall()这两个函数是非常常用的,我们可以用它们找到需要的标签或标签组。函数的格式定义如下:```      findAll(tag, attributes, recursive, text, limit, keywords)find(tag, attributes, recursive, text, keywords)```- tag:可以传入一个标签或多个标签的标签组,.findAll({"h1","h2","h3","h4","h5","h6"})- attributes:用一个字典封装的一个标签的若干属性和对应的属性值- recursive:是否递归查找子标签,默认为true,如果设置为False,则只查找一级标签。- text:用来匹配标签的文本内容,不是标签的属性,切记。- limit:限制数量,当为1时相当于find()函数,设置为n时,显示前n个,按在网页上的顺序排列显示。- keyword:选择具有指定属性的标签。### 3.beautifulsoup对象- BeautifulSoup 对象:前面代码中的bsObj- Tag 对象 :前面代码中的bsObj.div.h1- NavigableString 对象:标签里的文字- comment 对象:查找html的注释标签, <!--like this one-->### 4.导航树:整个html页面可以简化为一棵树,如下所示:![输入图片说明](https://static.oschina.net/uploads/img/201605/07122511_gnYC.png "在这里输入图片标题")![输入图片说明](https://static.oschina.net/uploads/img/201605/07122527_3gG9.png "在这里输入图片标题")1.处理子标签和后代标签:一般情况下,beautifulsoup总是处理当前标签下的后代标签,如bs0bj.body.h1是处理当前body标签下的第一个h1标签。bs0bj.body.finaAll("img")是找到第一div标签下的索引img列表。如果只想要找到子标签,可以使用.children标签。```from urllib.request import urlopenfrom bs4 import BeautifulSouphtml = urlopen("http://www.pythonscraping.com/pages/page3.html")bsObj = BeautifulSoup(html)for child in bsObj.find("table",{"id":"giftList"}).children:    print(child)```上面的代码会打印giftlist表格中的索引产品的数据行。使用descendants()标签可以输出所有的后代标签。2.兄弟标签:使用next_siblings()函数可以处理兄弟标签。```from urllib.request import urlopenfrom bs4 import BeautifulSouphtml = urlopen("http://www.pythonscraping.com/pages/page3.html")bsObj = BeautifulSoup(html)for sibling in bsObj.find("table",{"id":"giftList"}).tr.next_siblings:print(sibling)```使用兄弟标签会跳过标签自身,因为自身不能当作自己的兄弟,同时兄弟标签只能查找后面的标签,不能查找自身以及前面的兄弟标签。与next_siblings()类似,previous_siblings()函数是查找前面的兄弟节点。同时还有next_siblings()和previous_siblings()函数,它们的作业是返回单个标签。3.父标签使用parent和parents标签可以查找给定标签的父标签或父标签列表。```from urllib.request import urlopenfrom bs4 import BeautifulSouphtml = urlopen("http://www.pythonscraping.com/pages/page3.html")bsObj = BeautifulSoup(html)print(bsObj.find("img",{"src":"../img/gifts/img1.jpg" }).parent.previous_sibling.get_text())```上面代码的意思是找到给定标签的父标签的前一个兄弟标签中的文字。### 5.正则表达式:正则表达式是非常丰富的,但是上手很简单。可以自己搜索一些教程学习。正则测试:http://www.regexpal.com/### 6.正则表达式与BeautifulSoup正则表达式是非常有用的,举个例子,加入你想要抓取索引的img图片,使用finaall()得到的结果可能会出乎意料,多了许多隐藏的图片或不相关的图片,此时可以使用正则表达式。我们发现想要获取的图片源代码格式如下:```<img  src="/static/imghwm/default1.png"  data-src="../img/gifts/img3.jpg"  class="lazy" alt="複雑な HTML の解析 003_html/css_WEB-ITnose" >```这样我们可以直接通过文件路径来查找信息,```from urllib.requestimport urlopenfrom bs4import BeautifulSoupimport rehtml = urlopen("http://www.pythonscraping.com/pages/page3.html")bsObj = BeautifulSoup(html)images = bsObj.findAll("img", {"src":re.compile("\.\.\/img\/gifts/img.*\.jpg")})for image in images:    print(image["src"])```上面的例子使用了正则表达式匹配了以../img/gifts/img开头,以.jpg结尾的图片。结果如下:```../img/gifts/img1.jpg../img/gifts/img2.jpg../img/gifts/img3.jpg../img/gifts/img4.jpg../img/gifts/img6.jpg```### 6.标签属性:对于一个标签对象,可以使用下面代码获得它的全部属性:```myTag.attrs```获得的属性存在一个字典中,可以取出某一个属性```myTag.attrs["href"]```### 7.lambda表达式

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
HTMLの未来:ウェブデザインの進化とトレンドHTMLの未来:ウェブデザインの進化とトレンドApr 17, 2025 am 12:12 AM

HTMLの将来は、無限の可能性に満ちています。 1)新機能と標準には、より多くのセマンティックタグとWebComponentsの人気が含まれます。 2)Webデザインのトレンドは、レスポンシブでアクセス可能なデザインに向けて発展し続けます。 3)パフォーマンスの最適化により、応答性の高い画像読み込みと怠zyなロードテクノロジーを通じてユーザーエクスペリエンスが向上します。

HTML対CSS対JavaScript:比較概要HTML対CSS対JavaScript:比較概要Apr 16, 2025 am 12:04 AM

Web開発におけるHTML、CSS、およびJavaScriptの役割は次のとおりです。HTMLはコンテンツ構造を担当し、CSSはスタイルを担当し、JavaScriptは動的な動作を担当します。 1。HTMLは、セマンティクスを確保するためにタグを使用してWebページの構造とコンテンツを定義します。 2。CSSは、セレクターと属性を介してWebページスタイルを制御して、美しく読みやすくします。 3。JavaScriptは、動的でインタラクティブな関数を実現するために、スクリプトを通じてWebページの動作を制御します。

HTML:それはプログラミング言語か何か他のものですか?HTML:それはプログラミング言語か何か他のものですか?Apr 15, 2025 am 12:13 AM

htmlisnotaprogramminglanguage; itisamarkuplanguage.1)htmlStructuresandformatswebcontentusingtags.2)ItworkswithcsssssssssdjavascriptforInteractivity、強化を促進します。

HTML:Webページの構造の構築HTML:Webページの構造の構築Apr 14, 2025 am 12:14 AM

HTMLは、Webページ構造の構築の基礎です。 1。HTMLは、コンテンツ構造とセマンティクス、および使用などを定義します。タグ。 2. SEO効果を改善するために、などのセマンティックマーカーを提供します。 3.タグを介したユーザーの相互作用を実現するには、フォーム検証に注意してください。 4. JavaScriptと組み合わせて、動的効果を実現するなどの高度な要素を使用します。 5.一般的なエラーには、閉じられていないラベルと引用されていない属性値が含まれ、検証ツールが必要です。 6.最適化戦略には、HTTP要求の削減、HTMLの圧縮、セマンティックタグの使用などが含まれます。

テキストからウェブサイトへ:HTMLの力テキストからウェブサイトへ:HTMLの力Apr 13, 2025 am 12:07 AM

HTMLは、Webページを構築するために使用される言語であり、タグと属性を使用してWebページの構造とコンテンツを定義します。 1)htmlは、などのタグを介してドキュメント構造を整理します。 2)ブラウザはHTMLを分析してDOMを構築し、Webページをレンダリングします。 3)マルチメディア関数を強化するなど、HTML5の新機能。 4)一般的なエラーには、閉じられていないラベルと引用されていない属性値が含まれます。 5)最適化の提案には、セマンティックタグの使用とファイルサイズの削減が含まれます。

HTML、CSS、およびJavaScriptの理解:初心者向けガイドHTML、CSS、およびJavaScriptの理解:初心者向けガイドApr 12, 2025 am 12:02 AM

webdevelopmentReliesOnhtml、css、andjavascript:1)htmlStructuresContent、2)cssStylesit、および3)Javascriptaddsinteractivity、形成、

HTMLの役割:Webコンテンツの構造HTMLの役割:Webコンテンツの構造Apr 11, 2025 am 12:12 AM

HTMLの役割は、タグと属性を使用してWebページの構造とコンテンツを定義することです。 1。HTMLは、読みやすく理解しやすいようなタグを介してコンテンツを整理します。 2。アクセシビリティとSEOを強化するには、セマンティックタグなどを使用します。 3. HTMLコードの最適化により、Webページの読み込み速度とユーザーエクスペリエンスが向上する可能性があります。

HTMLとコード:用語を詳しく見るHTMLとコード:用語を詳しく見るApr 10, 2025 am 09:28 AM

htmlisaspecifictypeofcodefocuseduructuringwebcontent

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール