小白表達能力弱,辭不達意,請大神嘴下留情,我哪里說得不清楚,麻煩耐心指出來。我再想辦法說清楚。
下面是某視頻教程的代碼。
我對12行和20行中的資料決議不太懂。
#12行:host_li_list = tree.xpath('//div[@class="bottom"]/ul/li')
#20行:city_names_list = tree.xpath('//div[@class="bottom"]/ul/div[2]/li')
在網站的網頁的原始碼中,有兩個div, class = bottom, 但是它們的父級都不一樣。(見截圖)
第一個div class=bottom: 是熱門城市
第二個div class=bottom: 是全部成市
但是在這個爬蟲蟲的代碼中,沒有寫不同的父級,直接跳到div[@class="bottom"], 程式能搞清楚,到底是要決議哪個div class=bottom的資料嗎?
難道程式是先去試第一個運算式12行,如果成立,就不會往下走了;如果不成立,去試20行?

import requests
from lxml import etree
#專案需求:決議出所有城市名稱https://www.aqistudy.cn/historydata/
if __name__ == "__main__":
headers = {
'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
}
url = 'https://www.aqistudy.cn/historydata/'
page_text = requests.get(url=url,headers=headers).text
tree = etree.HTML(page_text)
host_li_list = tree.xpath('//div[@class="bottom"]/ul/li')
all_city_names = []
#決議到了熱門城市的城市名稱
for li in host_li_list:
hot_city_name = li.xpath('./a/text()')[0]
all_city_names.append(hot_city_name)
#決議的是全部城市的名稱
city_names_list = tree.xpath('//div[@class="bottom"]/ul/div[2]/li')
for li in city_names_list:
city_name = li.xpath('./a/text()')[0]
all_city_names.append(city_name)
print(all_city_names,len(all_city_names))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/165372.html
上一篇:Python小白
下一篇:二叉樹遍歷
