python學習第4天

爬蟲學習

   # -*- coding: utf-8 -*-
  # @Time    : 2019/7/31 11:28
  # @Author  : Eric Lee
 # @Email   : li.yan_li@neusoft.com
# @File    : spider_dangdang.py
# @Software: PyCharm
import requests
 from lxml import html
def spider_dangdang(isbn):
# 目標站點地址
url = 'http://search.dangdang.com/?key={}&act=input'.format(isbn)
# print(url)
# 獲取站點str類型的響應
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36"}

resp = requests.get(url, headers=headers)
html_data = resp.text
#  將html頁面寫入本地
# with open('dangdang.html', 'w', encoding='utf-8') as f:
#     f.write(html_data)

# 提取目標站的信息
selector = html.fromstring(html_data)
ul_list = selector.xpath('//div[@id="search_nature_rg"]/ul/li')
print('您好,共有{}家店鋪售賣此圖書'.format(len(ul_list)))

# 遍歷 ul_list
for li in ul_list:
    #  圖書名稱
    title = li.xpath('./a/@title')[0].strip()
    print(title)
    #  圖書購買鏈接
    link = li.xpath('a/@href')[0]
    print(link)
    #  圖書價格
    price = li.xpath('./p[@class="price"]/span[@class="search_now_price"]/text()')[0]
    price = float(price.replace('¥',''))
    print(price)
    # 圖書賣家名稱
    store = li.xpath('./p[@class="search_shangjia"]/a/text()')
    # if len(store) == 0:
    #     store = '當當自營'
    # else:
    #     store = store[0]
    store = '當當自營' if len(store) == 0 else store[0]
    print(store)

XPath

XPath 節(jié)點

節(jié)點
在 XPath 中拂蝎,有七種類型的節(jié)點:元素穴墅、屬性、文本温自、命名空間玄货、處理指令、注釋以及文檔(根)節(jié)點悼泌。XML 文檔是被作為節(jié)點樹來對待的松捉。樹的根被稱為文檔節(jié)點或者根節(jié)點。

請看下面這個 XML 文檔:

    <?xml version="1.0" encoding="UTF-8"?>

  <bookstore>
  <book>
   <title lang="en">Harry Potter</title>
   <author>J K. Rowling</author>
   <year>2005</year>
   <price>29.99</price>
 </book>
</bookstore>

上面的XML文檔中的節(jié)點例子:
<bookstore> (文檔節(jié)點)
<author>J K. Rowling</author> (元素節(jié)點)
lang="en" (屬性節(jié)點)

基本值(或稱原子值馆里,Atomic value)
基本值是無父或無子的節(jié)點隘世。
基本值的例子:
J K. Rowling
"en"
項目(Item)
項目是基本值或者節(jié)點。

節(jié)點關系
父(Parent)
每個元素以及屬性都有一個父鸠踪。
在下面的例子中丙者,book 元素是 title、author营密、year 以及 price 元素的父:

 <book>
  <title>Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

子(Children)
元素節(jié)點可有零個械媒、一個或多個子。
在下面的例子中评汰,title纷捞、author、year 以及 price 元素都是 book 元素的子:

 <book>
     <title>Harry Potter</title>
   <author>J K. Rowling</author>
   <year>2005</year>
   <price>29.99</price>
</book>

同胞(Sibling)
擁有相同的父的節(jié)點
在下面的例子中被去,title主儡、author、year 以及 price 元素都是同胞:

<book>
  <title>Harry Potter</title>
 <author>J K. Rowling</author>
  <year>2005</year>
 <price>29.99</price>
</book>

先輩(Ancestor)
某節(jié)點的父惨缆、父的父糜值,等等。
在下面的例子中踪央,title 元素的先輩是 book 元素和 bookstore 元素:

 <bookstore>
   <book>
    <title>Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
   <price>29.99</price>
 </book>

 </bookstore>

后代(Descendant)
某個節(jié)點的子臀玄,子的子,等等畅蹂。
在下面的例子中健无,bookstore 的后代是 book、title液斜、author累贤、year 以及 price 元素:

  <bookstore>
     <book>
     <title>Harry Potter</title>
     <author>J K. Rowling</author>
     <year>2005</year>
      <price>29.99</price>
 </book>
 </bookstore>
選取節(jié)點
選取節(jié)點方法

電影top5

  import requests
  from lxml import html
  import pandas as pd
 import jieba
 from matplotlib import pyplot as plt
plt.rcParams["font.sans-serif"] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
def Film():
# 目標站點地址
url = 'https://movie.douban.com/cinema/later/chongqing/'
header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36"}
resp = requests.get(url, headers=header)
html_data = resp.text
# 提取目標站的信息
selector = html.fromstring(html_data)
film = selector.xpath('//div[@id="showing-soon"]/div')
print(film)
div_list = []
for film_list in film:
    # 電影名
    title_list = film_list.xpath('./div/h3/a/text()')[0]
    print(title_list)
    # 上映時間
    time_list = film_list.xpath('./div/ul/li[1]/text()')[0]
    print(time_list)
    # 電影類型
    type_list = film_list.xpath('./div/ul/li[2]/text()')[0]
    print(type_list)
    # 上映國家
    con_list = film_list.xpath('./div/ul/li[3]/text()')[0]
    print(con_list)
    # 想看人數(shù)
    number_list = film_list.xpath('./div/ul/li[4]/span/text()')[0]
    print(number_list)
    # 替換
    number_list = int(number_list.replace('人想看',''))
    # 添加電影信息
    div_list.append({
        'title': title_list,
        'time': time_list,
        'type': type_list,
        'con': con_list,
        'number': number_list
    })
    # 按照想看人數(shù)排序
div_list.sort(key=lambda x:x['number'], reverse=True )
print(div_list)
# 遍歷
for items_list in div_list:
    print(items_list)
# 繪制top5最想看的電影占比圖
# 提取前五部電影信息
top5_store = [div_list[i] for i in range(5)]
# 提取電影名
x = [x['title'] for x in top5_store]
print(x)
# 提取想看人數(shù)
y = [x['number'] for x in top5_store]
print(y)
explode = [0.1, 0, 0, 0, 0]
plt.pie(y, explode=explode, labels=x, shadow=True, autopct='%1.1f%%')
plt.axis('equal')
plt.legend(loc=2)
plt.show()

# 繪制即將上映電影國家的占比圖
counts = {}
# 提取所有上映國家
s = [x['con'] for x in div_list]
print(s)
# 統(tǒng)計上映國家與數(shù)量
for word in s:
    counts[word] = counts.get(word, 0) + 1
print(counts)
# 提取上映國家
name = counts.keys()
print(name)
# 提取數(shù)量
number = counts.values()
print(number)
explode1 = [0.1, 0, 0, 0]
plt.pie(number, explode=explode1, labels=name, shadow=True, autopct='%1.1f%%')
plt.axis('equal')
plt.legend(loc=2)
plt.show()
Film()
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末叠穆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子臼膏,更是在濱河造成了極大的恐慌硼被,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渗磅,死亡現(xiàn)場離奇詭異嚷硫,居然都是意外死亡,警方通過查閱死者的電腦和手機始鱼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門仔掸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人医清,你說我怎么就攤上這事起暮。” “怎么了会烙?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵负懦,是天一觀的道長。 經(jīng)常有香客問我柏腻,道長纸厉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任葫盼,我火速辦了婚禮残腌,結果婚禮上,老公的妹妹穿的比我還像新娘贫导。我一直安慰自己,他們只是感情好蟆盹,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布孩灯。 她就那樣靜靜地躺著,像睡著了一般逾滥。 火紅的嫁衣襯著肌膚如雪峰档。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天寨昙,我揣著相機與錄音讥巡,去河邊找鬼。 笑死舔哪,一個胖子當著我的面吹牛欢顷,可吹牛的內容都是我干的。 我是一名探鬼主播捉蚤,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼抬驴,長吁一口氣:“原來是場噩夢啊……” “哼炼七!你這毒婦竟也來了?” 一聲冷哼從身側響起布持,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤豌拙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后题暖,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體按傅,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年胧卤,在試婚紗的時候發(fā)現(xiàn)自己被綠了逞敷。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡灌侣,死狀恐怖推捐,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情侧啼,我是刑警寧澤牛柒,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站痊乾,受9級特大地震影響皮壁,放射性物質發(fā)生泄漏。R本人自食惡果不足惜哪审,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一蛾魄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧湿滓,春花似錦滴须、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至朝氓,卻和暖如春魔市,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背赵哲。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工待德, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人枫夺。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓将宪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子涧偷,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內容

  • ···lxml用法源自 lxml python 官方文檔簸喂,更多內容請直接參閱官方文檔,本文對其進行翻譯與整理燎潮。lx...
    小豐豐_72a2閱讀 957評論 0 1
  • xpath的作用就是兩個字“定位”喻鳄, 運用各種方法進行快速準確的定位,推薦兩個非常有用的的firefox工具:fi...
    心悅飛飛閱讀 2,325評論 0 0
  • 在對解析xml和html常用的解析器比較后确封,最后選用lxml.etree的解析方法除呵,etree.HTML()方法將...
    竹林徒兒閱讀 500評論 0 1
  • 保持健康,才有可能等到奇點臨近爪喘,即使奇點沒有臨近颜曾,保持健康也是我們生活的一個基本目標; 努力賺錢秉剑,說不定哪一天你所...
    自如得己閱讀 168評論 0 0
  • 1.感恩老公提前買好面包給我們當早餐泛豪,謝謝謝謝謝謝謝謝! 2.感恩弟弟自己起來不哭不鬧侦鹏,到了學校也沒有大鬧诡曙,謝謝謝...
    9d94bfda0e4c閱讀 173評論 0 0