国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用python scrapy爬取網(wǎng)頁(yè)中帶有地圖展示的數(shù)據(jù)

Bryan / 1992人閱讀

摘要:例如這個(gè)界面,我要獲取全中國(guó)各大城市的物流園區(qū)分布信息,并且要獲取詳情信息,這個(gè)頁(yè)面里面是有個(gè)地圖鑲嵌,每個(gè)城市物流信息你要多帶帶點(diǎn)擊地圖上的信息才能顯示。

最近有個(gè)需求,是要爬取某個(gè)物流公司的官網(wǎng)信息,我看了下官網(wǎng),基本上都是靜態(tài)頁(yè)面比較好抓取,不像那種資訊類,電子商務(wù)類型的網(wǎng)站結(jié)果復(fù)雜,反爬嚴(yán)格,AJAX眾多,還內(nèi)心暗自慶幸,當(dāng)我進(jìn)一步分析時(shí)候發(fā)現(xiàn)并非普通的靜態(tài)頁(yè)面。
例如這個(gè)URL界面,我要獲取全中國(guó)各大城市的物流園區(qū)分布信息,并且要獲取詳情信息,
這個(gè)頁(yè)面里面是有個(gè)地圖鑲嵌,每個(gè)城市物流信息你要多帶帶點(diǎn)擊地圖上的信息才能顯示。
https://www.glprop.com.cn/our...

我剛開(kāi)始想,這種會(huì)不會(huì)是ajax請(qǐng)求呢,通過(guò)chrmoe抓包并沒(méi)有發(fā)現(xiàn),然后我查看網(wǎng)頁(yè)源代碼
發(fā)現(xiàn)所有城市信息在一個(gè)scripts里面
如圖:

然后各個(gè)園區(qū)的信息在一個(gè)叫park={xx}里面存著

原來(lái)都在這里面,直接獲取源代碼,正則匹配,開(kāi)干。
item:

#普洛斯
class PuluosiNewsItem(scrapy.Item):
    newstitle=scrapy.Field()
    newtiems=scrapy.Field()
    newslink=scrapy.Field()
class PuluosiItem(scrapy.Item):
    assetstitle = scrapy.Field()
    assetaddress=scrapy.Field()
    assetgaikuang=scrapy.Field()
    assetpeople=scrapy.Field()
    asseturl = scrapy.Field()

pipelines:

class PuluosiNewsPipeline(object):
    def __init__(self):
        self.wb=Workbook()
        self.ws=self.wb.active
        #設(shè)置表頭
        self.ws.append(["普洛斯新聞標(biāo)題","新聞發(fā)布時(shí)間","新聞URL"])
        self.wb2 = Workbook()
        self.ws2 = self.wb2.active
        self.ws2.append(["資產(chǎn)標(biāo)題", "資產(chǎn)地址", "資產(chǎn)概況","其他信息","URL"])
    def process_item(self,item,spider):
        if isinstance(item, PuluosiNewsItem):
            line = [item["newstitle"], item["newtiems"], item["newslink"]]  # 把數(shù)據(jù)中每一項(xiàng)整理出來(lái)
            self.ws.append(line)
            self.wb.save("PuluosiNews.xlsx")  # 保存xlsx文件
        elif isinstance(item,PuluosiItem):
            line = [item["assetstitle"], item["assetaddress"], item["assetgaikuang"],item["assetpeople"],item["asseturl"]]
            self.ws2.append(line)
            self.wb2.save("PuluosiAsset.xlsx")  # 保存xlsx文件
        return item

spider:

# -*- coding: utf-8 -*-
import scrapy,re,json
from news.items import PuluosiNewsItem,PuluosiItem
from scrapy.linkextractors import LinkExtractor

class PuluosiSpider(scrapy.Spider):
    name = "puluosi"
    allowed_domains = ["glprop.com.cn"]
    # start_urls = ["https://www.glprop.com.cn/press-releases.html"]

    def start_requests(self):
        yield scrapy.Request("https://www.glprop.com.cn/press-releases.html", self.parse1)
        yield scrapy.Request("https://www.glprop.com.cn/in-the-news.html", self.parse2)
        yield scrapy.Request("https://www.glprop.com.cn/proposed-privatization.html", self.parse3)
        yield scrapy.Request("https://www.glprop.com.cn/our-network/network-detail.html", self.parse4)

    def parse1(self, response):
        print("此時(shí)啟動(dòng)的爬蟲(chóng)為:puluosi" )
        item=PuluosiNewsItem()
        web=response.xpath("http://tbody/tr")
        web.pop(0)
        for node in  web:
            item["newstitle"] = node.xpath(".//a/text()").extract()[0].strip()
            print(item["newstitle"])
            item["newtiems"] = node.xpath(".//td/text()").extract()[0].strip()
            print(item["newtiems"])
            # urljoin創(chuàng)建絕對(duì)的links路徑,始用于網(wǎng)頁(yè)中的href值為相對(duì)路徑的連接
            item["newslink"] = response.urljoin(web.xpath(".//a/@href").extract()[0])
            # print(item["newslink"])
            yield item
        #加入try 來(lái)判斷當(dāng)前年份的新聞是否有下一頁(yè)出現(xiàn)
        try:
            next_url_tmp = response.xpath("http://div[@class="page"]/a[contains(text(),"下一頁(yè)")]/@href").extract()[0]
            if next_url_tmp:
                next_url = "https://www.glprop.com.cn" + next_url_tmp
                yield scrapy.Request(next_url,callback=self.parse1)
        except Exception as e:
            print("當(dāng)前頁(yè)面沒(méi)有下一頁(yè)")
        href=response.xpath("http://ul[@class="timeList"]/li/a/@href")
        for nexturl in href:
            url1 =nexturl.extract()
            if url1:
                url="https://www.glprop.com.cn"+url1
                yield scrapy.Request(url,callback=self.parse1)

    def parse2(self,response):
        item = PuluosiNewsItem()
        web = response.xpath("http://tbody/tr")
        web.pop(0)
        for node in  web:
            item["newstitle"] = node.xpath(".//a/text()").extract()[0].strip()
            print(item["newstitle"])
            item["newtiems"] = node.xpath(".//td/text()").extract()[0].strip()
            print(item["newtiems"])
            # urljoin創(chuàng)建絕對(duì)的links路徑,始用于網(wǎng)頁(yè)中的href值為相對(duì)路徑的連接
            item["newslink"] = response.urljoin(web.xpath(".//a/@href").extract()[0])
            print(item["newslink"])
            yield item
        #加入try 來(lái)判斷當(dāng)前年份的新聞是否有下一頁(yè)出現(xiàn)
        try:
            next_url_tmp = response.xpath("http://div[@class="page"]/a[contains(text(),"下一頁(yè)")]/@href").extract()[0]
            if next_url_tmp:
                next_url = "https://www.glprop.com.cn" + next_url_tmp
                yield scrapy.Request(next_url,callback=self.parse2)
        except Exception as e:
            print("當(dāng)前頁(yè)面沒(méi)有下一頁(yè)")
        href=response.xpath("http://ul[@class="timeList"]/li/a/@href")
        for nexturl in href:
            url1 =nexturl.extract()
            if url1:
                url="https://www.glprop.com.cn"+url1
                yield scrapy.Request(url,callback=self.parse2)

    def parse3(self,response):
        item=PuluosiNewsItem()
        web=response.xpath("http://tbody/tr")
        web.pop()
        for node in  web:
            item["newstitle"] = node.xpath(".//a/text()").extract()[0].strip()
            print(item["newstitle"])
            item["newtiems"] = node.xpath(".//td/text()").extract()[0].strip()
            print(item["newtiems"])
            # urljoin創(chuàng)建絕對(duì)的links路徑,始用于網(wǎng)頁(yè)中的href值為相對(duì)路徑的連接
            item["newslink"] = response.urljoin(web.xpath(".//a/@href").extract()[0])
            print(item["newslink"])
            yield item

    def parse4(self,response):
        link=LinkExtractor(restrict_xpaths="http://div[@class="net_pop1"]//div[@class="city"]")
        links=link.extract_links(response)
        #獲取所有城市的links
        for i in links:
            detailurl=i.url
            yield scrapy.Request(url=detailurl,callback=self.parse5)

    def parse4(self, response):
        item = PuluosiItem()
        citycode=re.findall("var cities =(.*);",response.text )
        citycodejson=json.loads(("".join(citycode)))
        #把每個(gè)城市的id和name取出來(lái)放到一個(gè)字典
        dictcity={}
        for i in citycodejson:
            citycodename=i["name"]
            citycodenm=i["id"]
            dictcity[citycodenm]=citycodename
        detail=re.findall("var parks =(.*);",response.text )
        jsonBody = json.loads(("".join(detail)))
        list = []
        for key1 in jsonBody:
            for key2  in jsonBody[key1]:
                tmp=jsonBody[key1][key2]
                list.append(jsonBody[key1][key2])
        for node in list:
            assetaddress = node["city_id"]
            item["assetaddress"] = dictcity[assetaddress]
            # print(item["assetaddress"])
            item["assetstitle"] = node["name"]
            # print(item["assetstitle"])
            item["assetgaikuang"] = node["detail_single"].strip().replace(" ", "").replace(" ", "")
            # print(item["assetgaikuang"])
            assetpeople = node["description"]
            item["assetpeople"] = re.sub(r"<.*?>", "", (assetpeople.strip())).replace(" ", "")
            item["asseturl"]="https://www.glprop.com.cn/network-city-detail.html?city="+item["assetaddress"]
            # print(item["assetpeople"])
            yield item

然后我順便把頁(yè)面的新聞信息也爬取了。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/43670.html

相關(guān)文章

  • 首次公開(kāi),整理12年積累博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時(shí)間永遠(yuǎn)都過(guò)得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過(guò)去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評(píng)論0 收藏0
  • Python Scrapy爬蟲(chóng)框架學(xué)習(xí)

    摘要:組件引擎負(fù)責(zé)控制數(shù)據(jù)流在系統(tǒng)中所有組件中流動(dòng),并在相應(yīng)動(dòng)作發(fā)生時(shí)觸發(fā)事件。下載器下載器負(fù)責(zé)獲取頁(yè)面數(shù)據(jù)并提供給引擎,而后提供給。下載器中間件下載器中間件是在引擎及下載器之間的特定鉤子,處理傳遞給引擎的。 Scrapy 是用Python實(shí)現(xiàn)一個(gè)為爬取網(wǎng)站數(shù)據(jù)、提取結(jié)構(gòu)性數(shù)據(jù)而編寫(xiě)的應(yīng)用框架。 一、Scrapy框架簡(jiǎn)介 Scrapy是一個(gè)為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫(xiě)的應(yīng)用框架。 ...

    harriszh 評(píng)論0 收藏0
  • 爬蟲(chóng)入門(mén)

    摘要:通用網(wǎng)絡(luò)爬蟲(chóng)通用網(wǎng)絡(luò)爬蟲(chóng)又稱全網(wǎng)爬蟲(chóng),爬取對(duì)象從一些種子擴(kuò)充到整個(gè)。為提高工作效率,通用網(wǎng)絡(luò)爬蟲(chóng)會(huì)采取一定的爬取策略。介紹是一個(gè)國(guó)人編寫(xiě)的強(qiáng)大的網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)并帶有強(qiáng)大的。 爬蟲(chóng) 簡(jiǎn)單的說(shuō)網(wǎng)絡(luò)爬蟲(chóng)(Web crawler)也叫做網(wǎng)絡(luò)鏟(Web scraper)、網(wǎng)絡(luò)蜘蛛(Web spider),其行為一般是先爬到對(duì)應(yīng)的網(wǎng)頁(yè)上,再把需要的信息鏟下來(lái)。 分類 網(wǎng)絡(luò)爬蟲(chóng)按照系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)技術(shù),...

    defcon 評(píng)論0 收藏0
  • 爬蟲(chóng)入門(mén)

    摘要:通用網(wǎng)絡(luò)爬蟲(chóng)通用網(wǎng)絡(luò)爬蟲(chóng)又稱全網(wǎng)爬蟲(chóng),爬取對(duì)象從一些種子擴(kuò)充到整個(gè)。為提高工作效率,通用網(wǎng)絡(luò)爬蟲(chóng)會(huì)采取一定的爬取策略。介紹是一個(gè)國(guó)人編寫(xiě)的強(qiáng)大的網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng)并帶有強(qiáng)大的。 爬蟲(chóng) 簡(jiǎn)單的說(shuō)網(wǎng)絡(luò)爬蟲(chóng)(Web crawler)也叫做網(wǎng)絡(luò)鏟(Web scraper)、網(wǎng)絡(luò)蜘蛛(Web spider),其行為一般是先爬到對(duì)應(yīng)的網(wǎng)頁(yè)上,再把需要的信息鏟下來(lái)。 分類 網(wǎng)絡(luò)爬蟲(chóng)按照系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)技術(shù),...

    Invoker 評(píng)論0 收藏0
  • 為你爬蟲(chóng)提提速?

    摘要:項(xiàng)目介紹本文將展示如何利用中的異步模塊來(lái)提高爬蟲(chóng)的效率。使用用的爬蟲(chóng)爬取了條數(shù)據(jù),耗時(shí)小時(shí),該爬蟲(chóng)爬取條數(shù)據(jù),耗時(shí)半小時(shí)。如果是同樣的數(shù)據(jù)量,那么爬取條數(shù)據(jù)耗時(shí)約小時(shí),該爬蟲(chóng)僅用了爬蟲(chóng)的四分之一的時(shí)間就出色地完成了任務(wù)。 項(xiàng)目介紹 ??本文將展示如何利用Pyhton中的異步模塊來(lái)提高爬蟲(chóng)的效率。??我們需要爬取的目標(biāo)為:融360網(wǎng)站上的理財(cái)產(chǎn)品信息(https://www.rong36...

    yanest 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<