【python】爬取笑話數據

最近想要一些有關笑話的數據,於是把目標放在了“笑掉大牙”這個網站上。

一、分析

我們先進入網站首頁,可以發現有很多分類
在這裏插入圖片描述
我們依次打開這些分類,可以發現結構都是一樣的,這樣很利於我們爬取數據。
每一個分類都列有很多標題,這些標題也很有規律,分別在class爲line1和line2的div標籤裏
在這裏插入圖片描述
我們隨便打開一個標題進入查看內容。可以發現這些內容都在一個class爲content的div裏在這裏插入圖片描述

二、代碼

1.獲取標題的鏈接

res = requests.get(url=url, headers=headers)
html = etree.HTML(res.text)
href1 = html.xpath("//div[@class='line1']/a/@href")
href2 = html.xpath("//div[@class='line2']/a/@href")
href1.extend(href2)

2.獲取每個標題裏的內容

res = requests.get(url=url, headers=headers)
html = etree.HTML(res.text)
content_html = html.xpath("//div[@class='content']")
# print(etree.tostring(content[0], encoding="utf-8", pretty_print=True, method="html").decode("utf-8"))
contents = etree.tostring(content_html[0], encoding="utf-8").decode("utf-8")
# print(contents)
jokes_list = re.findall('<!--listS-->(.*?)<!--listE-->', contents)
title = re.findall('<h2 class="titleview">(.*?)</h2>', contents)
joke_list = jokes_list[0].replace("<br/>", "")
joke_list = joke_list.replace("\u3000", "")
joke_list = joke_list.replace("<font color=""#FFFFFF"">xiaodiaodaya.cn</font>", "")
joke_list = joke_list.split("<br/><br/>")
# print(title)
# print(joke_list)

3.保存爲CSV格式

with open("jokes_節日笑話.csv", "w", newline="", encoding="utf-8") as fp:
    writer = csv.writer(fp)
    writer.writerow(header)
    writer.writerows(jokes)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章