チュートリアルのデモサイトembarrassmentsウィキペディアは、私はちょうど練習の手にサイトを見つけなければならなかったので、(関与者の個人情報のための理由であると思われるもの)GGを持っているので。
アップデートの4.4.2バージョンは、etreeは今ElementIncludeパッケージに、直接参照が死ぬことですので、数日前に、主にetree、利用区間のlxmlのを学ぶために、そしてetreeが新しいパーサを追加、解析方法は、最初のインスタンスを起動されHTMLparse方法で、もちろん、私はこのゴミを使用していませんでした爬虫類クロールhtmlと2回に分けてデータクレンジング、そしてそれは、書き込み時間をクロールすることは本当にないが、登る200怪談をその結果、TXTの数メガバイトをマルチスレッドを使用していませんでしたデモ非常に良いああ(霧、大草)、それがいかに重要であるかマルチスレッドという。xxxxxは
私たちが得ることはテキストで、明示的にページ上に表示されているのでああ、コンテンツやページのURLを取得するには、最初にF12分析のウェブサイトのソースコードでは、法律に来るのは簡単です:
我々はページのリンク<A>ラベルの内容は、<記事>下のタグは、XPathの位置を特定するために使用することができます取得したい怪談、(「//記事// H2 / A / @ hrefの」)、あなたは現在のページに得ることができます20怪談コンテンツページへのリンク
そして、コンテンツの詳細ページを開きます
これは、(「// divの[ID @ = 『シングル』]」// p)を、私たちはdiv要素のテキストID =「シングル」に<P>タグにしたいことを確認するのは簡単です、あなたが見つけるためにXPathを使用することができます
人の場合は、常にコンテンツページのページ20として、また、スプライスされているURL、/ページ/私は仕事を取得します
写真をキャッチない、しかし明らかに無関係なグラフィックのxxxxx
そして、コードの実装
import requests from lxml.ElementInclude import etree for i in range(1, 11): url = "https://mimi.kunjuke.com/guigushi/page/" + str(i) headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36"} res = requests.get(url, headers=headers).text html = etree.HTML(res) url_result = html.xpath("//article//h2/a/@href") for site in url_result: res2 = requests.get(site).text html2 = etree.HTML(res2) content_result = html2.xpath("//div[@id='single']//p") title_result = html2.xpath("//div[@id='single']//h2") storyName = "H:/GhostStory/"+title_result[0].text+".txt" with open(storyName,"wb+") as f: f.write(bytes(content_result[0].text, encoding="utf-8"))
很简单的实现,诶呀不用多线程爬这种几kb的txt,真实难受,看来后续还要进一步学习多线程啊
因为没做日志info或者系统打印台输出和异常管理,嘿嘿,懒狗,手动校验一下吧
爬完校验一下是不是爬了十页两百个鬼故事
打开一个看看,i/o和encoding没写错的话就应该没问题
bingo ,欸,好垃圾哦, 我转了一圈吃完一个肉松饼,这200个鬼故事还没爬完,残念xxxxxx
下次一定,下次一定,下次一定补上 info ,异常和多线程,惭愧地流出了虚假地泪水 喵 >_<!!!