python實現單詞的簡單爬取

2021-10-21 07:09:50 字數 2826 閱讀 3795

因為不需要登入之類的操作,可以說,這是對爬蟲初學者來說最簡單最基礎的乙個案例了,由於之後要用到這裡就簡單學習記錄一下。

爬取目標:金山詞霸的四六級詞彙

我們可以很容易看到四個選項,六級就不列出來了。

**很容易拿到,且規律這麼明顯,所以說很容易。

我們每次爬取單詞的時候僅需對這四個詞庫隨機選取即可。

我們選擇四級必備詞彙詞庫第一課點進去之後我們發現後面的url會加上乙個引數,引數值為課的節數。這樣我們根據這個規律來完成拼接一種詞庫介面的一節課的url。我們根據class以及其course的最大值來隨機構造url。

))我們找到單詞所在的標籤,確定每個單詞所在的標籤

這裡我們可以只用xpath來獲取,可以使用xpath helper外掛程式(chrome)。我們右擊元素選擇copy ,copy xpath,這樣我們就獲取了這個元素的xpath位置

//*[@id=「word_list_1」]/li[2]/div[1]

我們可以通過改變標籤的下標來改變不同的單詞。獲取裡面的文字後面需要加上text()

這裡我們就獲得了第乙個單詞

如果我們把xpath裡面的下標去掉會發生什麼呢

div下標去掉

li下標也去掉

顯示有二十個結果,那肯定是是個單詞和釋義啦!

但是我們發現,每一課其實是有分頁的,即兩個list,上面語法只能獲得10個單詞,我們需要改變一下語法才行。

我們發現兩組單詞都有乙個共同的class word_main_list 我們從這裡入手,最終得到獲得所有單詞的xpath語法,這裡需要一點xpath語法基礎。

獲取英語單詞

//*[@class=「word_main_list」]/li/div[@class=「word_main_list_w」]/span//text()

獲取單詞釋義

//*[@class=「word_main_list」]/li/div[@class=「word_main_list_s」]/span//text()

接下來的任務就很簡單了,直接給出**

from lxml import etree

import requests

import random

words =

meaning =

choice = random.choice([(11, 226), (12, 105), (122, 35), (123, 25)])

url = "?action=words&class=" + str(choice[0]) + "&course=" + str(

random.randint(1, choice[1]))

r = requests.get(url)

if r.status_code == 200:

text = r.text

doc = etree.html(text)

words = doc.xpath('//*[@class="word_main_list"]/li/div[@class="word_main_list_w"]/span//text()')

meaning = doc.xpath('//*[@class="word_main_list"]/li/div[@class="word_main_list_s"]/span//text()')

li =

for i in range(len(words)):

dic =

print(li)

python簡單爬蟲爬取佇列的實現

deque 是雙端佇列。set 中不允許出現重複的內容。import re import urllib import urllib.request from collections import deque queue deque 待抓取的網頁 visited set 已經抓取過的網頁 url nu...

python爬取單詞構造自己的詞典

make dictionary.py import urllib.request from lxml import etree import re url meaning xpath html body div 1 div div div 1 div 1 ul li defget word mean...

簡單爬蟲實現 爬取URL

實驗室任務詳細 寫乙個python指令碼,指令碼後面跟上乙個url的 頁面。要求 正則匹配爬蟲的方式,匹配該url網頁中的html的href標籤中的url,顯示這些url,一行乙個。首先明確什麼是 href 定義和用法 標籤的 href 屬性用於指定超連結目標的 url。href 屬性的值可以是任何...