ホームページ >バックエンド開発 >Python チュートリアル >Python は JD 製品カテゴリとリンクをクロールします
前書き
この記事の主な知識点は、Python の BeautifulSoup
を使用して多層トラバーサルを実行することです。 BeautifulSoup
进行多层的遍历。
如图所示。只是一个简单的哈,不是爬取里面的隐藏的东西。
示例代码
from bs4 import BeautifulSoup as bs import requests headers = { "host": "www.jd.com", "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36 Core/1.47.933.400 QQBrowser/9.4.8699.400", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" } session = requests.session() def get_url(): renspned = bs(session.get('http://www.jd.com/',headers = headers).text,'html.parser') for i in renspned.find("p", {"class": "dd-inner"}).find_all("a",{"target":"_blank"}): print(i.get_text(),':',i.get('href')) get_url()
运行这段代码以及达到了我们的目的。
我们来解读一下这段代码。
首先我们要访问到京东的首页。
然后通过BeautifulSoup
对访问到的首页进行解析。
这个时候,我们就要定位元素,来获取我们需要的东西了。
在浏览器中通过F12
,我们可以看到下图所示的东西:
我们来看看下面这句代码:
for i in renspned.find("p", {"class": "dd-inner"}).find_all("a",{"target":"_blank"})
这一行代码完全满足我们的需求,首先用find
方法,定位到了class=“dd-inner
”的p,然后使用find_all
对该标签下所有的a标签。
最后,我想打印出所有的商品分类以及对应的链接,于是,我使用了i.get_text()
和i.get('href')
的方法终于获取到了商品分类和对应的链接。
总结
其实不是很难,主要是要用对方法。笔者因为是初学方法没有用对。花了差不多两天时间才搞定。这里也是告诉大家,可以使用find().find_all()
写真のように。単純なハッキングであり、内部に隠されたものをクロールするわけではありません。
サンプルコード
🎜🎜rrreee🎜🎜🎜このコードを実行して目的を達成します。 🎜
🎜🎜🎜このコードを解釈してみましょう。 🎜🎜🎜🎜まず、JD.com のホームページにアクセスする必要があります。 🎜🎜🎜次に、BeautifulSoup
を使用して、訪問したホームページを解析します。 🎜🎜🎜現時点では、必要なものを取得するために要素を見つける必要があります。 🎜🎜🎜ブラウザで F12
を使用すると、下の図に示されている内容が表示されます: 🎜
🎜🎜次のコードを見てみましょう: 🎜
🎜rrreee🎜🎜🎜このコード行は私たちのニーズを完全に満たしています。最初に find
メソッドを使用します。 class="dd-inner
" を使用して p を検索し、このタグの下にあるすべての a タグに対して find_all
を使用します。 🎜🎜🎜最後に、すべての商品カテゴリーと対応するリンクを出力したかったので、最後に i.get_text()
と i.get('href')
メソッドを使用しました。製品分類と対応リンクを取得しました。 🎜🎜🎜まとめ🎜🎜🎜実際には難しいことではありません。重要なのは、正しい方法を使用することです。筆者は初心者だったので正しい方法を使用していませんでした。完成するまでにほぼ2日かかりました。ここでは、find().find_all()
メソッドを使用してマルチレイヤー トラバーサルを実行できることも説明します。上記は、Python を使用して JD.com の製品カテゴリとリンクをクロールしたときの私の経験の一部です。Python を学習しているすべての人に役立つことを願っています。 🎜🎜🎜🎜🎜JD.com の製品カテゴリとリンクをクロールする Python に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。 🎜