python网络爬虫_一篇文章教会你利用Python网络爬虫获取穷游攻略
點(diǎn)擊上方“IT共享之家”,進(jìn)行關(guān)注
回復(fù)“資料”可獲贈(zèng)Python學(xué)習(xí)福利
【一、項(xiàng)目背景】
??? 窮游網(wǎng)提供原創(chuàng)實(shí)用的出境游旅行指南、攻略,旅行社區(qū)和問(wèn)答交流平臺(tái),以及智能的旅行規(guī)劃解決方案,同時(shí)提供簽證、保險(xiǎn)、機(jī)票、酒店預(yù)訂、租車(chē)等在線(xiàn)增值服務(wù)。窮游“鼓勵(lì)和幫助中國(guó)旅行者以自己的視角和方式體驗(yàn)世界”。
????今天教大家獲取窮游網(wǎng)的城市信息,使用Python將數(shù)據(jù)寫(xiě)入csv文檔。
【二、項(xiàng)目目標(biāo)】
????實(shí)現(xiàn)將獲取對(duì)應(yīng)的城市、圖片鏈接、熱點(diǎn)、批量下載 保存csv文檔。
【三、涉及的庫(kù)和網(wǎng)站】
1、網(wǎng)址如下:
https://place.qyer.com/south-korea/citylist-0-0-{}2、涉及的庫(kù):requests、lxml、fake_useragent、time、csv
【四、項(xiàng)目分析】
????首先需要解決如何對(duì)下一頁(yè)的網(wǎng)址進(jìn)行請(qǐng)求的問(wèn)題。可以點(diǎn)擊下一頁(yè)的按鈕,觀察到網(wǎng)站的變化分別如下所示:
- https://place.qyer.com/south-korea/citylist-0-0-1- https://place.qyer.com/south-korea/citylist-0-0-2- https://place.qyer.com/south-korea/citylist-0-0-3????觀察到只有citylist-0-0-{}/變化,變化的部分用{}代替,再用for循環(huán)遍歷這網(wǎng)址,實(shí)現(xiàn)多個(gè)網(wǎng)址請(qǐng)求。
【五、項(xiàng)目實(shí)施】
1、我們定義一個(gè)class類(lèi)繼承object,然后定義init方法繼承self,再定義一個(gè)主函數(shù)main繼承self。準(zhǔn)備url地址。
import requests,osfrom lxml import etreeimport randomimport timefrom fake_useragent import UserAgentclass Travel(object): def __init__(self): self.url = "https://place.qyer.com/south-korea/citylist-0-0-{}/" def main(self): passif __name__ == '__main__': spider= Travel() spider.main()
2、隨機(jī)產(chǎn)生UserAgent。
self.film_list = [] ua = UserAgent(verify_ssl=False) for i in range(1, 50): self.film_list.append(ua.chrome) self.Hostreferer = { 'User-Agent': random.choice(self.film_list) }3、多頁(yè)請(qǐng)求。
startPage = int(input("起始頁(yè):")) endPage = int(input("終止頁(yè):")) for page in range(startPage, endPage + 1): url = self.url.format(page)4、定義get_page方法,進(jìn)行數(shù)據(jù)請(qǐng)求。
'''數(shù)據(jù)請(qǐng)求''' def get_page(self, url): html = requests.get(url=url, headers=self.Hostreferer).content.decode("utf-8") self.page_page(html) # print(html)//網(wǎng)頁(yè) # print(self.headers)//構(gòu)造頭5、定義page_page,xpath解析數(shù)據(jù), for循環(huán)遍歷數(shù)組。
在谷歌瀏覽器上,右鍵選擇開(kāi)發(fā)者工具或者按F12。右鍵檢查,xpath找到對(duì)應(yīng)信息的字段。如下圖所示。
parse_html = etree.HTML(html) image_src_list = parse_html.xpath('//ul[@class="plcCitylist"]/li') for i in image_src_list: b = i.xpath('.//h3//a/text()')[0].strip() c = i.xpath('.//p[@class="beento"]//text()')[0].strip() d = i.xpath('.//p[@class="pics"]//img//@src')[0].strip()6、定義csv文件保存數(shù)據(jù),寫(xiě)入文檔。
# 創(chuàng)建csv文件進(jìn)行寫(xiě)入 csv_file = open('scrape.csv', 'a', encoding='gbk') csv_writer = csv.writer(csv_file) csv_writer.writerow([b, c, d]) csv_file.close(7、在main方法調(diào)用。
def main(self): for i1 in range(1, 25): url = self.url.format(i1) # print(url) html = self.get_page(url) time.sleep(2) print("第%d頁(yè)" % i1)8、time模塊,設(shè)置時(shí)間延遲。
time.sleep(2)【六、效果展示】
1、點(diǎn)擊運(yùn)行,輸入起始頁(yè),終止頁(yè)。
2、將下載成功信息顯示在控制臺(tái)。
3、保存csv文檔。
【七、總結(jié)】
??? 1、不建議抓取太多數(shù)據(jù),容易對(duì)服務(wù)器造成負(fù)載,淺嘗輒止即可。
??? 2、希望通過(guò)這個(gè)項(xiàng)目,能夠幫助大家對(duì)csv文檔處理有進(jìn)一步的了解。
??? 3、本文基于Python網(wǎng)絡(luò)爬蟲(chóng),利用爬蟲(chóng)庫(kù),實(shí)現(xiàn)窮游網(wǎng)的獲取。實(shí)現(xiàn)的時(shí)候,總會(huì)有各種各樣的問(wèn)題,切勿眼高手低,勤動(dòng)手,才可以理解的更加深刻。
??? 4、可以根據(jù)自己的需要選擇自己的喜歡的城市獲取自己想要的有效信息 。
????5、需要本文源碼的小伙伴,后臺(tái)回復(fù)“窮游攻略”四個(gè)字,即可獲取。
看完本文有收獲?請(qǐng)轉(zhuǎn)發(fā)分享給更多的人
IT共享之家
入群請(qǐng)?jiān)谖⑿藕笈_(tái)回復(fù)【入群】
-------------------?End?-------------------
往期精彩文章推薦:
一篇文章教會(huì)你用Python抓取抖音app熱點(diǎn)數(shù)據(jù)
一篇文章教會(huì)你使用Python定時(shí)抓取微博評(píng)論
手把手教你使用Python抓取QQ音樂(lè)數(shù)據(jù)(第四彈)
總結(jié)
以上是生活随笔為你收集整理的python网络爬虫_一篇文章教会你利用Python网络爬虫获取穷游攻略的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [最新答案V0.4版]微软等数据结构+算
- 下一篇: 《About Multi-Touch(多