中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

貴陽(yáng)市網(wǎng)站建設(shè)引流獲客app下載

貴陽(yáng)市網(wǎng)站建設(shè),引流獲客app下載,網(wǎng)站的困難,濟(jì)南網(wǎng)絡(luò)廣播電視臺(tái)前言 在日常生活中,我們看到可愛(ài)的貓咪表情包,總是會(huì)忍不住收藏 認(rèn)識(shí)的一些朋友也養(yǎng)了貓,比如橘貓、英短、加菲貓之類的 看他們發(fā)朋友圈擼貓,老羨慕了,貓咪真的太可愛(ài)啦。 你是不是也動(dòng)過(guò)養(yǎng)貓貓的小心思呢~反正我是動(dòng)…

前言

在日常生活中,我們看到可愛(ài)的貓咪表情包,總是會(huì)忍不住收藏

認(rèn)識(shí)的一些朋友也養(yǎng)了貓,比如橘貓、英短、加菲貓之類的

在這里插入圖片描述

看他們發(fā)朋友圈擼貓,老羨慕了,貓咪真的太可愛(ài)啦。

你是不是也動(dòng)過(guò)養(yǎng)貓貓的小心思呢~反正我是動(dòng)過(guò)了

于是,網(wǎng)上閑逛的時(shí)候發(fā)現(xiàn)一個(gè)專門交易貓貓的網(wǎng)站—貓貓交易網(wǎng)

這不得采集20W+ 條貓貓數(shù)據(jù),以此來(lái)了解一下可愛(ài)的貓咪。

python源碼、教程、資料、解答: 點(diǎn)擊此處跳轉(zhuǎn)文末名片獲取

數(shù)據(jù)獲取

打開(kāi)貓貓交易網(wǎng),先采集貓咪品種數(shù)據(jù),首頁(yè)點(diǎn)擊貓咪品種

這里打開(kāi)頁(yè)面可以看到貓貓品種列表:

但只顯示了每種貓貓的品種名,參考價(jià)格,我們點(diǎn)進(jìn)詳情頁(yè),可以看到更加詳細(xì)的數(shù)據(jù):

品種名、參考價(jià)格、中文學(xué)名、基本信息、性格特點(diǎn)、生活習(xí)性、優(yōu)缺點(diǎn)、喂養(yǎng)方法等。

檢查網(wǎng)頁(yè),可以發(fā)現(xiàn)網(wǎng)頁(yè)結(jié)構(gòu)簡(jiǎn)單,容易解析和提取數(shù)據(jù)。

代碼如下:

import requests
import re
import csv
from lxml import etree
from tqdm import tqdm
from fake_useragent import UserAgent

隨機(jī)產(chǎn)生請(qǐng)求頭

ua = UserAgent(verify_ssl=False, path='fake_useragent.json')def random_ua():        # 用于隨機(jī)切換請(qǐng)求頭headers = {"Accept-Encoding": "gzip","Accept-Language": "zh-CN","Connection": "keep-alive","Host": "www.maomijiaoyi.com","User-Agent": ua.random}return headers

創(chuàng)建保存數(shù)據(jù)的csv

def create_csv():       with open('./data/cat_kind.csv', 'w', newline='', encoding='utf-8') as f:wr = csv.writer(f)wr.writerow(['品種', '參考價(jià)格', '中文學(xué)名', '別名', '祖先', '分布區(qū)域','原產(chǎn)地', '體型', '原始用途', '今日用途', '分組', '身高','體重', '壽命', '整體', '毛發(fā)', '顏色', '頭部', '眼睛','耳朵', '鼻子', '尾巴', '胸部', '頸部', '前驅(qū)', '后驅(qū)','基本信息', 'FCI標(biāo)準(zhǔn)', '性格特點(diǎn)', '生活習(xí)性', '優(yōu)點(diǎn)/缺點(diǎn)','喂養(yǎng)方法', '鑒別挑選'])

獲取HTML網(wǎng)頁(yè)源代碼 返回文本

def scrape_page(url1):      response = requests.get(url1, headers=random_ua())# print(response.status_code)response.encoding = 'utf-8'return response.text

獲取每個(gè)品種貓咪詳情頁(yè)url

def get_cat_urls(html1):   dom = etree.HTML(html1)lis = dom.xpath('//div[@class="pinzhong_left"]/a')cat_urls = []for li in lis:cat_url = li.xpath('./@href')[0]cat_url = 'http://*****' + cat_urlcat_urls.append(cat_url)return cat_urls

采集每個(gè)品種貓咪詳情頁(yè)里的有關(guān)信息

def get_info(html2):    # 品種kind = re.findall('div class="line1">.*?<div class="name">(.*?)<span>', html2, re.S)[0]kind = kind.replace('\r','').replace('\n','').replace('\t','')# 參考價(jià)格price = re.findall('<div>參考價(jià)格:</div>.*?<div>(.*?)</div>', html2, re.S)[0]price = price.replace('\r', '').replace('\n', '').replace('\t', '')# 中文學(xué)名chinese_name = re.findall('<div>中文學(xué)名:</div>.*?<div>(.*?)</div>', html2, re.S)[0]chinese_name = chinese_name.replace('\r', '').replace('\n', '').replace('\t', '')# 別名other_name = re.findall('<div>別名:</div>.*?<div>(.*?)</div>', html2, re.S)[0]other_name = other_name.replace('\r', '').replace('\n', '').replace('\t', '')# 祖先ancestor = re.findall('<div>祖先:</div>.*?<div>(.*?)</div>', html2, re.S)[0]ancestor = ancestor.replace('\r', '').replace('\n', '').replace('\t', '')# 分布區(qū)域area = re.findall('<div>分布區(qū)域:</div>.*?<div>(.*?)</div>', html2, re.S)[0]area = area.replace('\r', '').replace('\n', '').replace('\t', '')# 原產(chǎn)地source_area = re.findall('<div>原產(chǎn)地:</div>.*?<div>(.*?)</div>', html2, re.S)[0]source_area = source_area.replace('\r', '').replace('\n', '').replace('\t', '')# 體型body_size = re.findall('<div>體型:</div>.*?<div>(.*?)</div>', html2, re.S)[0]body_size = body_size.replace('\r', '').replace('\n', '').replace('\t', '').strip()# 原始用途source_use = re.findall('<div>原始用途:</div>.*?<div>(.*?)</div>', html2, re.S)[0]source_use = source_use.replace('\r', '').replace('\n', '').replace('\t', '')# 今日用途today_use = re.findall('<div>今日用途:</div>.*?<div>(.*?)</div>', html2, re.S)[0]today_use = today_use.replace('\r', '').replace('\n', '').replace('\t', '')# 分組group = re.findall('<div>分組:</div>.*?<div>(.*?)</div>', html2, re.S)[0]group = group.replace('\r', '').replace('\n', '').replace('\t', '')# 身高height = re.findall('<div>身高:</div>.*?<div>(.*?)</div>', html2, re.S)[0]height = height.replace('\r', '').replace('\n', '').replace('\t', '')# 體重weight = re.findall('<div>體重:</div>.*?<div>(.*?)</div>', html2, re.S)[0]weight = weight.replace('\r', '').replace('\n', '').replace('\t', '')# 壽命lifetime = re.findall('<div>壽命:</div>.*?<div>(.*?)</div>', html2, re.S)[0]lifetime = lifetime.replace('\r', '').replace('\n', '').replace('\t', '')# 整體entirety = re.findall('<div>整體</div>.*?<!-- 頁(yè)面小折角 -->.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]entirety = entirety.replace('\r', '').replace('\n', '').replace('\t', '').strip()# 毛發(fā)hair = re.findall('<div>毛發(fā)</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]hair = hair.replace('\r', '').replace('\n', '').replace('\t', '').strip()# 顏色color = re.findall('<div>顏色</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]color = color.replace('\r', '').replace('\n', '').replace('\t', '').strip()# 頭部head = re.findall('<div>頭部</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]head = head.replace('\r', '').replace('\n', '').replace('\t', '').strip()# 眼睛eye = re.findall('<div>眼睛</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]eye = eye.replace('\r', '').replace('\n', '').replace('\t', '').strip()# 耳朵ear = re.findall('<div>耳朵</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]ear = ear.replace('\r', '').replace('\n', '').replace('\t', '').strip()# 鼻子nose = re.findall('<div>鼻子</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]nose = nose.replace('\r', '').replace('\n', '').replace('\t', '').strip()# 尾巴tail = re.findall('<div>尾巴</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]tail = tail.replace('\r', '').replace('\n', '').replace('\t', '').strip()# 胸部chest = re.findall('<div>胸部</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]chest = chest.replace('\r', '').replace('\n', '').replace('\t', '').strip()# 頸部neck = re.findall('<div>頸部</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]neck = neck.replace('\r', '').replace('\n', '').replace('\t', '').strip()# 前驅(qū)font_foot = re.findall('<div>前驅(qū)</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]font_foot = font_foot.replace('\r', '').replace('\n', '').replace('\t', '').strip()# 后驅(qū)rear_foot = re.findall('<div>前驅(qū)</div>.*?<div></div>.*?<div>(.*?)</div>', html2, re.S)[0]rear_foot = rear_foot.replace('\r', '').replace('\n', '').replace('\t', '').strip()

保存前面貓貓的各種有關(guān)信息

    cat = [kind, price, chinese_name, other_name, ancestor, area, source_area,body_size, source_use, today_use, group, height, weight, lifetime,entirety, hair, color, head, eye, ear, nose, tail, chest, neck, font_foot, rear_foot]

提取標(biāo)簽欄信息(基本信息-FCI標(biāo)準(zhǔn)-性格特點(diǎn)-生活習(xí)性-優(yōu)缺點(diǎn)-喂養(yǎng)方法-鑒別挑選)

    html2 = etree.HTML(html2)labs = html2.xpath('//div[@class="property_list"]/div')for lab in labs:text1 = lab.xpath('string(.)')text1 = text1.replace('\n','').replace('\t','').replace('\r','').replace(' ','')cat.append(text1)return cat

保存數(shù)據(jù) 追加寫入

def write_to_csv(data):     with open('./data/cat_kind.csv', 'a+', newline='', encoding='utf-8') as fn:wr = csv.writer(fn)wr.writerow(data)

創(chuàng)建保存數(shù)據(jù)的csv

if __name__ == '__main__':create_csv()# 貓咪品種頁(yè)面urlbase_url = 'http://*****/index.php?/pinzhongdaquan_5.html'# 獲取品種頁(yè)面中的所有urlhtml = scrape_page(base_url)urls = get_cat_urls(html)# 進(jìn)度條可視化運(yùn)行情況    就不打印東西來(lái)看了pbar = tqdm(urls)

開(kāi)始采集

    for url in pbar:text = scrape_page(url)info = get_info(text)write_to_csv(info)

成功采集了貓咪品種數(shù)據(jù)保存到csv,接下來(lái)采集貓貓交易數(shù)據(jù)

進(jìn)入到買貓賣貓頁(yè)面:

爬取更詳細(xì)的數(shù)據(jù)需要進(jìn)入詳情頁(yè),包含商家信息、貓咪品種、貓齡、價(jià)格、標(biāo)題、在售只數(shù)、預(yù)防等信息。

由于數(shù)據(jù)量較大,可以分開(kāi)爬取,先獲取到每一頁(yè)中的所有貓貓?jiān)斍榻灰祖溄拥?url 保存到csv,再

讀取 csv 中的 url 來(lái)請(qǐng)求,爬取每條交易數(shù)據(jù),爬蟲思路跟前面類似,為了加快爬取效率,可以使用多線程或者異步爬蟲。

最終獲取了 20W+ 條數(shù)據(jù)。

尾語(yǔ) 💝

要成功,先發(fā)瘋,下定決心往前沖!

學(xué)習(xí)是需要長(zhǎng)期堅(jiān)持的,一步一個(gè)腳印地走向未來(lái)!

未來(lái)的你一定會(huì)感謝今天學(xué)習(xí)的你。

—— 心靈雞湯

本文章到這里就結(jié)束啦~感興趣的小伙伴可以復(fù)制代碼去試試哦 😝

👇問(wèn)題解答 · 源碼獲取 · 技術(shù)交流 · 抱團(tuán)學(xué)習(xí)請(qǐng)聯(lián)系👇

http://www.risenshineclean.com/news/9210.html

相關(guān)文章:

  • 如何將自己做的網(wǎng)站放到網(wǎng)上去百度站內(nèi)搜索提升關(guān)鍵詞排名
  • 莆田cms建站模板seo思維
  • 水產(chǎn)養(yǎng)殖畜禽飼料類網(wǎng)站前端模板大數(shù)據(jù)分析培訓(xùn)機(jī)構(gòu)
  • 現(xiàn)在公司做各網(wǎng)站要多少錢網(wǎng)站運(yùn)維
  • 店名注冊(cè)查詢官網(wǎng)搜索引擎關(guān)鍵詞seo優(yōu)化公司
  • 做實(shí)驗(yàn)學(xué)編程的網(wǎng)站優(yōu)化模型有哪些
  • 專業(yè)建設(shè)金融行業(yè)網(wǎng)站的公司網(wǎng)絡(luò)推廣方案怎么寫
  • 衡水網(wǎng)站建設(shè)服務(wù)廣州seo服務(wù)
  • 網(wǎng)站服務(wù)器++免費(fèi)新站整站快速排名
  • 做淘客的網(wǎng)站有哪些百度指數(shù)怎么看城市
  • 權(quán)威的網(wǎng)頁(yè)設(shè)計(jì)公司seo網(wǎng)絡(luò)推廣教程
  • 高端的響應(yīng)式網(wǎng)站建設(shè)公司百度seo優(yōu)化技巧
  • 今日頭條石家莊重慶seo代理
  • 先做個(gè)在線電影網(wǎng)站該怎么做數(shù)據(jù)分析師35歲以后怎么辦
  • 類似凡科建站的網(wǎng)站中文域名的網(wǎng)站
  • 廣州網(wǎng)站建設(shè)大公司百度推廣優(yōu)化師
  • 如何做黑客攻擊網(wǎng)站免費(fèi)刷粉網(wǎng)站推廣
  • 裝潢北京seo網(wǎng)站推廣
  • 深圳知名網(wǎng)站廣告發(fā)布平臺(tái)
  • 用asp做網(wǎng)站課程百度推廣在哪里
  • 有哪些好的ps素材網(wǎng)站口碑營(yíng)銷案例
  • 國(guó)外psd網(wǎng)頁(yè)模板網(wǎng)站今天宣布疫情最新消息
  • wordpress文本做成鏈接優(yōu)化大師
  • 泉州網(wǎng)站設(shè)計(jì)師招聘怎么在百度免費(fèi)推廣
  • 淘寶客做網(wǎng)站怎樣推廣抖音seo代理
  • wordpress 登陸后訪問(wèn)棗莊網(wǎng)絡(luò)推廣seo
  • 網(wǎng)站開(kāi)發(fā)實(shí)例解析網(wǎng)絡(luò)營(yíng)銷推廣服務(wù)
  • ui設(shè)計(jì)方向網(wǎng)站建設(shè)目標(biāo)互聯(lián)網(wǎng)營(yíng)銷的十五種方式
  • 寶豐網(wǎng)站建設(shè)品牌廣告語(yǔ)
  • 做java的源碼網(wǎng)站網(wǎng)站搜索排名優(yōu)化怎么做