├── !DOCUMENT └── Selenium自动化爬虫(公版).docx ├── EXCEL表格 ├── 第一章 │ └── Selenium-历史.xlsx ├── 第七章 │ ├── city.csv │ └── instance.csv ├── 第二章 │ └── 版本对照表.xlsx ├── 第五章 │ └── EC表格.xlsx ├── 第八章 │ ├── writer.csv │ └── writer1.csv ├── 第六章 │ └── jjtt.csv ├── 第十一章 │ └── thread.xlsx ├── 第十二章 │ └── SMTP.xlsx ├── 第十五章 │ └── 界面布局.xlsx ├── 第十四章 │ ├── Python通配符.xlsx │ └── 类型转换.xlsx └── 附录 │ ├── GIT分布式版本管理系统——git常用命令列表.xlsx │ └── 怎样阅读源码——素材.xlsx ├── Others ├── 内容简介.docx ├── 前言.docx └── 目录.docx ├── Selenium自动化测试(公版)-compressed.pdf ├── readme.md ├── 代码 ├── 第七章 │ ├── HASH_TEST.PY │ ├── NLTK2.py │ ├── NLTK词性分析.py │ ├── base64_test.py │ ├── bloom_filter.py │ ├── csv.py │ ├── csv_read.py │ ├── csv_wtire.py │ ├── json_test.py │ ├── json_test2.py │ ├── mysql_test.py │ ├── nltk3.py │ ├── py-mysql.py │ ├── pymysql2.py │ ├── test.blm │ ├── test.py │ ├── xml_test.py │ ├── xml_test2.py │ └── xml_test3.py ├── 第三章 │ ├── 3,5.py │ ├── 3.1.py │ ├── 3.2.py │ ├── 3.3.1.py │ ├── 3.3.py │ ├── 3.4.py │ ├── 3.6.py │ ├── 3.7.py │ └── 3.8.py ├── 第九章 │ ├── tb.py │ ├── tb_change.py │ ├── tb_change2.py │ ├── test.py │ └── test2.py ├── 第二章 │ ├── 2.1.py │ ├── 2.2.1.py │ ├── 2.2.2.py │ ├── 2.3.py │ ├── 2.4.py │ ├── 2.5.py │ ├── 2.6.1.py │ ├── 2.6.2.py │ ├── 2.6.3.py │ ├── 2.7.py │ └── 2.9.py ├── 第五章 │ ├── 5.1.py │ ├── 5.2.py │ ├── 5.3.py │ ├── 5.4.py │ ├── 5.5.py │ ├── 5.6.py │ ├── 5.7.py │ └── 5.8.py ├── 第八章 │ ├── maoyan1.py │ └── maoyan2.py ├── 第六章 │ ├── 6.1.py │ ├── 6.2.py │ ├── 6.3.py │ ├── 6.4.py │ ├── from selenium import webdriver.py │ ├── pc.py │ ├── pc3.py │ ├── pc6.py │ ├── rc.py │ └── time.py ├── 第十一章 │ ├── thread.py │ ├── thread2.py │ ├── thread_lock.py │ └── threadlock2.py ├── 第十七章 │ ├── 17.1.py │ └── 17.3.py ├── 第十五章 │ ├── tk1.py │ ├── tk10.py │ ├── tk11.py │ ├── tk12.py │ ├── tk13.py │ ├── tk14.py │ ├── tk15.py │ ├── tk16.py │ ├── tk17.py │ ├── tk18.py │ ├── tk19.py │ ├── tk2.py │ ├── tk3.py │ ├── tk4.py │ ├── tk5.py │ ├── tk6.py │ ├── tk7.py │ ├── tk8.py │ └── tk9.py ├── 第十六章 │ ├── 16-2.py │ └── 16-3.py ├── 第十四章 │ └── 2to3 │ │ ├── py2.py │ │ ├── py2.py.bak │ │ └── test.py ├── 第十章 │ ├── assert.py │ ├── book_unittest.py │ ├── htmltestrunner.py │ ├── library_book.py │ ├── selenium_unittest.py │ └── test.py └── 第四章 │ └── 1.py └── 图片 ├── 第一章 ├── 1-1.png ├── 1-2.png ├── 1-3.png ├── 1-4.png ├── 1-5.png └── 1.png ├── 第七章 ├── 7.1.png ├── 7.10.png ├── 7.11.png ├── 7.12.png ├── 7.13.png ├── 7.14.png ├── 7.2.png ├── 7.3.png ├── 7.4.png ├── 7.5.png ├── 7.6.png ├── 7.7.png ├── 7.8.png └── 7.9.png ├── 第三章 ├── 3.1.png ├── 3.2.png ├── 3.3.png ├── 3.4.png ├── 3.5.png └── 3.6.png ├── 第九章 ├── 9.1.png ├── 9.2.png ├── 9.3.png └── 备用.png ├── 第二章 ├── 2-1.png ├── 2-2.png ├── 2-3.png ├── 2-4.png ├── 2-5.png └── 2-6.png ├── 第五章 ├── 5.1.png └── 5.2.png ├── 第八章 ├── 8.1.png ├── 8.2.png ├── 8.3.png ├── 8.4.png └── 8.5.png ├── 第六章 ├── 6.1.png ├── 6.2.png ├── 6.3.png └── 6.4.png ├── 第十七章 ├── 17-1.png ├── 17-2.png ├── 17-3.png ├── 17-4.png └── 17-5.png ├── 第十三章 ├── 13.1.png ├── 13.10.png ├── 13.11.png ├── 13.12.png ├── 13.13.png ├── 13.14.png ├── 13.15.png ├── 13.16.png ├── 13.17.png ├── 13.18.png ├── 13.19.png ├── 13.2.png ├── 13.20.png ├── 13.21.png ├── 13.22.png ├── 13.23.png ├── 13.3.png ├── 13.4.png ├── 13.5.png ├── 13.6.png ├── 13.7.png ├── 13.8.png └── 13.9.png ├── 第十二章 ├── 12.1.png ├── 12.2.png ├── 12.3.png ├── 12.4.png ├── 12.6.png ├── 12.7.png └── 备用.png ├── 第十五章 ├── 15.1.png ├── 15.10.png ├── 15.11.png ├── 15.12.png ├── 15.13.png ├── 15.14.png ├── 15.15.png ├── 15.16.png ├── 15.17.png ├── 15.18.png ├── 15.19.png ├── 15.2.png ├── 15.20.png ├── 15.21.png ├── 15.22.png ├── 15.23.png ├── 15.24.png ├── 15.25(1).png ├── 15.25(2).png ├── 15.25(3).png ├── 15.25(4).png ├── 15.25(5).png ├── 15.26.png ├── 15.27.png ├── 15.28.png ├── 15.29.png ├── 15.3.png ├── 15.30.png ├── 15.31.png ├── 15.32.png ├── 15.4.png ├── 15.5.png ├── 15.6.png ├── 15.7.png ├── 15.8.png ├── 15.9.png └── 备用 │ ├── 备用 (1).png │ ├── 备用 (10).png │ ├── 备用 (11).png │ ├── 备用 (12).png │ ├── 备用 (13).png │ ├── 备用 (14).png │ ├── 备用 (15).png │ ├── 备用 (16).png │ ├── 备用 (17).png │ ├── 备用 (18).png │ ├── 备用 (19).png │ ├── 备用 (2).png │ ├── 备用 (20).png │ ├── 备用 (21).png │ ├── 备用 (22).png │ ├── 备用 (3).png │ ├── 备用 (4).png │ ├── 备用 (5).png │ ├── 备用 (6).png │ ├── 备用 (7).png │ ├── 备用 (8).png │ └── 备用 (9).png ├── 第十六章 ├── 16-1.png ├── 16-2.png ├── 16-3.png ├── 16-4.png ├── 16-5.png └── 16-6.png ├── 第十章 └── 10.1.png └── 第四章 ├── 4.1.png ├── 4.2.png ├── bing_1.png ├── bing_2.png └── bing_3.png /!DOCUMENT/Selenium自动化爬虫(公版).docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/!DOCUMENT/Selenium自动化爬虫(公版).docx -------------------------------------------------------------------------------- /EXCEL表格/第一章/Selenium-历史.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/EXCEL表格/第一章/Selenium-历史.xlsx -------------------------------------------------------------------------------- /EXCEL表格/第七章/city.csv: -------------------------------------------------------------------------------- 1 | 城市ID,城市名,城市名(英文),国家,国家CODE 2 | SP91FD79GFQU,安道尔,Andorra la Vella,安道尔,AD 3 | THM3PVJHX1G2,Ar Ruways,Ar Ruways,阿联酋,AE 4 | THQEJNH8EJWT,阿布扎比,Abu Dhabi,阿联酋,AE 5 | THR9SGGWEJYQ,艾因,Al Ain,阿联酋,AE 6 | THRRDQPEMRVW,迪拜,Dubai,阿联酋,AE 7 | THRXZEE9YZJZ,Adh Dhayd,Adh Dhayd,阿联酋,AE 8 | THX2K8PMN3P2,夏尔迦,Sharjah,阿联酋,AE 9 | THX2T3YW6N1Z,Ajman,Ajman,阿联酋,AE 10 | THX92JYJ35PD,Umm al-Quwain,Umm al-Quwain,阿联酋,AE 11 | THXF9NBDGHBD,Ras al-Khaimah,Ras al-Khaimah,阿联酋,AE 12 | TK2NFH69DJCX,富查伊拉,Fujairah,阿联酋,AE 13 | TK80456VXS33,Khor'fakkan,Khor'fakkan,阿联酋,AE 14 | TK818XBSTY7W,Dibba Al-Hisn,Dibba Al-Hisn,阿联酋,AE 15 | TMSEKGDWVG58,哈什,Khash,阿富汗,AF 16 | TMTG8Z3ZR71E,拉什卡尔加,Lashkar Gah,阿富汗,AF 17 | TMTVJ2F6P7C4,格里什克,Gereshk,阿富汗,AF 18 | TMU0JMXG0W3N,法拉,Farah,阿富汗,AF 19 | TMUJ3V21PP50,Kushk,Kushk,阿富汗,AF 20 | TMUJQNW7EMUP,Shindand,Shindand,阿富汗,AF 21 | TMWEZ708UVZ3,坎大哈,Kandahar,阿富汗,AF 22 | TQ5MJWGKH809,Kafir Qala,Kafir Qala,阿富汗,AF 23 | TQH5RKUKT74V,赫拉特,Herat,阿富汗,AF 24 | TQHS0JJFY7P8,Karukh,Karukh,阿富汗,AF 25 | TQJDP319GSRW,Shahrak,Shahrak,阿富汗,AF 26 | TQM772T1GNW8,Ghormach,Ghormach,阿富汗,AF 27 | TQPFUMZ4XYZE,Cool urhajo,Cool urhajo,阿富汗,AF 28 | TQQH65MCR2WE,梅马内,Maymana,阿富汗,AF 29 | TQQYH2FD4R1S,Sar-e Pul,Sar-e Pul,阿富汗,AF 30 | TQR5ZY1ZUBPJ,Sang-e Charak,Sang-e Charak,阿富汗,AF 31 | TQW61ZJDMT2J,安德胡伊,Andkhoy,阿富汗,AF 32 | TQWB85PU1D55,Shibirghan,Shibirghan,阿富汗,AF 33 | TQWUYGG6WZTC,卡尔金,Qarqin,阿富汗,AF 34 | TQX8Z4STST7T,马扎里沙里夫,Mazar-i-Sharif,阿富汗,AF 35 | TQX947313B3N,巴尔赫,Balkh,阿富汗,AF 36 | TTBWVH4ZWH9C,加兹尼,Ghazni,阿富汗,AF 37 | TTCPPK0Z2BSD,加德兹,Gardez,阿富汗,AF 38 | TTCTXJ62XXKX,霍斯特,Khost,阿富汗,AF 39 | TW110ZWG50B2,Baraki Barak,Baraki Barak,阿富汗,AF 40 | TW1HC06QC1DN,帕格曼,Paghman,阿富汗,AF 41 | TW1HQJ9UBJVY,喀布尔,Kabul,阿富汗,AF 42 | TW1PNN1144HM,恰里卡尔,Charikar,阿富汗,AF 43 | TW1PZ917J4V4,Jabul Saraj,Jabul Saraj,阿富汗,AF 44 | TW1VJXSZQXDR,Mehtar Lam,Mehtar Lam,阿富汗,AF 45 | TW2Q79Z3H60U,Aibak,Aibak,阿富汗,AF 46 | TW2U7XSB673E,Pul-e Khumri,Pul-e Khumri,阿富汗,AF 47 | TW2VE3RU7NYM,巴格兰,Baghlan,阿富汗,AF 48 | TW3JJJMMM8MW,Nahrin,Nahrin,阿富汗,AF 49 | TW45G5JHXXS2,贾拉拉巴德,Jalalabad,阿富汗,AF 50 | TW460URV6SJM,Markaz-e Woluswali-ye Achin,Markaz-e Woluswali-ye Achin,阿富汗,AF 51 | TW4W6URWSEK0,阿萨达巴德,Asadabad,阿富汗,AF 52 | TW4XRC97UJFE,阿斯马尔,Asmar,阿富汗,AF 53 | TW80U883EEZJ,Khulm,Khulm,阿富汗,AF 54 | TW8BYYK1SQN0,昆都士,Kunduz,阿富汗,AF 55 | TW8GTPSR79ZT,Qarawul,Qarawul,阿富汗,AF 56 | TW90SVB7J36M,汗阿巴德,Khanabad,阿富汗,AF 57 | TW92YR97P2P4,Taloqan,Taloqan,阿富汗,AF 58 | TW96VP1RZTHZ,Art Khwajah,Art Khwajah,阿富汗,AF 59 | TW9EJN8FZ7WV,Rustaq,Rustaq,阿富汗,AF 60 | TWD5NHFU1DG1,法扎巴德,Fayzabad,阿富汗,AF 61 | DEH12EFPYDDZ,圣约翰,Saint John,安提瓜和巴布达,AG 62 | DE5PTH69YN1Q,瓦利,The Valley,安圭拉,AI 63 | SRJY5QXZRQ5Z,发罗拉,Vlor?,阿尔巴尼亚,AL 64 | SRJZPNV33E24,Patos Fshat,Patos Fshat,阿尔巴尼亚,AL 65 | SRJZTK0PB3TG,Fier-Cifci,Fier-Cifci,阿尔巴尼亚,AL 66 | SRMFM18GM8RR,卡瓦亚,Kavaj?,阿尔巴尼亚,AL 67 | SRMG46SU30W2,都拉斯,Durr?s,阿尔巴尼亚,AL 68 | SRMVXN2P1M9H,莱什,Lezh?,阿尔巴尼亚,AL 69 | SRMZK429KPDG,斯库台,Shkod?r,阿尔巴尼亚,AL 70 | SRN4Z5P7UZ3F,萨兰达,Sarand?,阿尔巴尼亚,AL 71 | SRN7FR8DW5UP,吉诺卡斯特,Gjirokaster,阿尔巴尼亚,AL 72 | SRNPW42B8KWQ,培拉特,Berat,阿尔巴尼亚,AL 73 | SRNZ0FKHS3TY,戈里察,Kor??,阿尔巴尼亚,AL 74 | SRQ0BMK8PFBC,卢什涅,Lushnj?,阿尔巴尼亚,AL 75 | SRQ0J5QYU5CD,库乔瓦,Ku?ov?,阿尔巴尼亚,AL 76 | SRQ3BUR3TTK9,爱尔巴桑,Elbasan,阿尔巴尼亚,AL 77 | SRQ54GRWJS5Q,地拉那,Tirana-Al,阿尔巴尼亚,AL 78 | SRQH4KS8MNQ3,Kruj?,Kruj?,阿尔巴尼亚,AL 79 | SRQHBED8EWDZ,拉奇,La?,阿尔巴尼亚,AL 80 | SRQHXQFJ2YJY,布雷利,Burrel,阿尔巴尼亚,AL 81 | SRQX2EYGCTYJ,库克斯,Kuk?s,阿尔巴尼亚,AL 82 | SZPEGNJ4Z9X3,Masis,Masis,亚美尼亚,AM 83 | SZPEMDU232T8,阿尔塔沙特,Artashat,亚美尼亚,AM 84 | SZPF971H5RYB,亚拉腊,Ararat,亚美尼亚,AM 85 | SZPK6JGSEQ13,阿尔马维尔,Armavir,亚美尼亚,AM 86 | SZPKRZYM7KXR,埃奇米阿津,Vagharshapat,亚美尼亚,AM 87 | SZPSSFTZFMF1,埃里温,Yerevan,亚美尼亚,AM 88 | SZPT32PRQ2X3,阿什塔拉克,Ashtarak,亚美尼亚,AM 89 | SZPTPD2NDJQC,阿博维扬,Abovyan,亚美尼亚,AM 90 | SZPY6SMFBJ4F,赫拉兹丹,Hrazdan,亚美尼亚,AM 91 | SZPYWVDES1VC,塞凡,Sevan,亚美尼亚,AM 92 | SZR0JDR5MN4R,列宁纳坎,Gyumri,亚美尼亚,AM 93 | SZR2R362YCE6,斯皮塔克,Spitak,亚美尼亚,AM 94 | SZR8HKPRZ18M,瓦纳佐尔,Vanadzor,亚美尼亚,AM 95 | TNBZPCX8KXH0,卡潘,Kapan,亚美尼亚,AM 96 | TP08W04WV84G,Hats'avan,Hats'avan,亚美尼亚,AM 97 | TP0BY3N7JQM4,Goris,Goris,亚美尼亚,AM 98 | TP0JDF4NYP7C,Gavarr,Gavarr,亚美尼亚,AM 99 | KM29S98UPPZB,木萨米迪什,Namibe,安哥拉,AO 100 | KM3E5H2VNJCN,卢班戈,Lubango,安哥拉,AO 101 | -------------------------------------------------------------------------------- /EXCEL表格/第七章/instance.csv: -------------------------------------------------------------------------------- 1 | name,gender,score 2 | zhang_san,male,100 3 | Li_si,male,80 4 | -------------------------------------------------------------------------------- /EXCEL表格/第二章/版本对照表.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/EXCEL表格/第二章/版本对照表.xlsx -------------------------------------------------------------------------------- /EXCEL表格/第五章/EC表格.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/EXCEL表格/第五章/EC表格.xlsx -------------------------------------------------------------------------------- /EXCEL表格/第八章/writer.csv: -------------------------------------------------------------------------------- 1 | 霸王别姬,"主演:张国荣,张丰毅,巩俐",9.6,影片借一出《霸王别姬》的京戏,牵扯出三个人之间一段随时代风云变幻的爱恨情仇。段小楼(张丰毅 饰)与程蝶衣(张国荣 饰)是一对打小一起长大的师兄弟,两人一个演生,一个饰旦,一向配合天衣无缝,尤其一出《霸王别姬》,更是誉满京城,为此,两人约定合演一辈子《霸王别姬》。但两人对戏剧与人生关系的理解有本质不同,段小楼深知戏非人生,程蝶衣则是人戏不分。段小楼在认为该成家立业之时迎娶了名妓菊仙(巩俐 饰),致使程蝶衣认定菊仙是可耻的第三者,使段小楼做了叛徒,自此,三人围绕一出《霸王别姬》生出的爱恨情仇战开始随着时代风云的变迁不断升级,终酿成悲剧。 2 | 肖申克的救赎,"主演:蒂姆·罗宾斯,摩根·弗里曼,鲍勃·冈顿",9.5,20世纪40年代末,小有成就的青年银行家安迪(蒂姆·罗宾斯 饰)因涉嫌杀害妻子及她的情人而锒铛入狱。在这座名为肖申克的监狱内,希望似乎虚无缥缈,终身监禁的惩罚无疑注定了安迪接下来灰暗绝望的人生。未过多久,安迪尝试接近囚犯中颇有声望的瑞德(摩根·弗里曼 饰),请求对方帮自己搞来小锤子。以此为契机,二人逐渐熟稔,安迪也仿佛在鱼龙混杂、罪恶横生、黑白混淆的牢狱中找到属于自己的求生之道。他利用自身的专业知识,帮助监狱管理层逃税、洗黑钱,同时凭借与瑞德的交往在犯人中间也渐渐受到礼遇。表面看来,他已如瑞德那样对那堵高墙从憎恨转变为处之泰然,但是对自由的渴望仍促使他朝着心中的希望和目标前进。而关于其罪行的真相,似乎更使这一切朝前推进了一步…… 3 | 罗马假日,"主演:格利高里·派克,奥黛丽·赫本,埃迪·艾伯特",9.1,欧洲某国的安妮公主(奥黛丽·赫本 饰)到访罗马,国务烦身,但她又厌倦繁文缛节。一天晚上,身心俱疲的她偷偷来到民间欣赏夜景,巧遇报社记者乔(格利高里·派克 饰)。二人把手同游,相当快乐。公主更是到乔的家中作客并在那过夜。不料乔无意中发现了公主的真实身份,他决定炮制一个独家新闻,于是乔和朋友、摄影师欧文(埃迪·艾伯特 饰)一起带公主同游罗马,并且偷拍了公主的很多生活照。然而,在接下来与公主的相处中,乔不知不觉恋上了公主。为了保护公主的形象,乔只能忍痛抛弃功成名就的良机,将照片送予了公主。安妮公主在经历了罗马一日假期后,反而体验了自己对国家的责任,毅然返回了大使馆,为了本身的责任而果断抛弃了爱情。 4 | 这个杀手不太冷,"主演:让·雷诺,加里·奥德曼,娜塔莉·波特曼",9.5,里昂(让·雷诺 饰)是名孤独的职业杀手,受人雇佣。一天,邻居家小姑娘马蒂尔德(纳塔丽·波特曼 饰)敲开他的房门,要求在他那里暂避杀身之祸。原来邻居家的主人是警方缉毒组的眼线,只因贪污了一小包毒品而遭恶警(加里·奥德曼 饰)杀害全家的惩罚。马蒂尔德 得到里昂的留救,幸免于难,并留在里昂那里。里昂教小女孩使枪,她教里昂法文,两人关系日趋亲密,相处融洽。 女孩想着去报仇,反倒被抓,里昂及时赶到,将女孩救回。混杂着哀怨情仇的正邪之战渐次升级,更大的冲突在所难免…… 5 | 教父,"主演:马龙·白兰度,阿尔·帕西诺,詹姆斯·肯恩",9.3,40年代的美国,“教父”维托·唐·柯里昂(马龙·白兰度 饰)是黑手党柯里昂家族的首领,带领家族从事非法的勾当,但同时他也是许多弱小平民的保护神,深得人们爱戴。 因为拒绝了毒枭索洛索的毒品交易要求,柯里昂家族和纽约其他几个黑手党家族的矛盾激化。圣诞前夕,索洛索劫持了“教 父”的参谋汤姆,并派人暗杀“教父”;因为内奸的出卖,“教父”的大儿子逊尼被仇家杀害;小儿子麦克(阿尔·帕西诺 饰)也被卷了进来,失去爱妻。黑手党家族之间的矛盾越来越白热化。年老的“教父”面对丧子之痛怎样统领全局?黑手党之间的仇杀如何落幕?谁是家族的内奸?谁又能够成为新一代的“教父”?血雨腥风和温情脉脉,在这部里程碑式的黑帮史诗巨片里真实上演。 6 | 泰坦尼克号,"主演:莱昂纳多·迪卡普里奥,凯特·温丝莱特,比利·赞恩",9.5,1912年4月15日,载着1316号乘客和891名船员的豪华巨轮“泰坦尼克号”与冰山相撞而沉没,这场海难被认为是20世纪人间十大灾难之一。1985年,“泰坦尼克号”的沉船遗骸在北大西洋两英里半的海底被发现。美国探险家洛维特(比尔·帕克斯顿 饰)亲自潜入海底,在船舱的墙壁上看见了一幅画,洛维持的发现立刻引起了一位老妇人(格劳瑞亚·斯图尔特 饰)的注意。已经是101岁高龄的露丝称她就是画中的少女。在潜水舱里,露丝开始叙述当年在船上发生的故事。年轻的贵族少女露丝(凯特·温丝莱特 饰)与穷画家杰克(莱昂纳多·迪卡普里奥 饰)不顾世俗的偏见坠入爱河,然而就在1912年4月14日,一个风平浪静的夜晚,泰坦尼克号撞上了冰山,“永不沉没的”泰坦尼克号面临沉船的命运,罗丝和杰克刚萌芽的爱情也将经历生死的考验,最终不得不永世相隔。老态龙钟的罗丝讲完这段哀恸天地的爱情之后,把那串价值连城的项链“海洋之心”沉入海底,让它陪着杰克和这段爱情长眠海底。 7 | -------------------------------------------------------------------------------- /EXCEL表格/第八章/writer1.csv: -------------------------------------------------------------------------------- 1 | 霸王别姬,"主演:张国荣,张丰毅,巩俐",9.6,影片借一出《霸王别姬》的京戏,牵扯出三个人之间一段随时代风云变幻的爱恨情仇。段小楼(张丰毅 饰)与程蝶衣(张国荣 饰)是一对打小一起长大的师兄弟,两人一个演生,一个饰旦,一向配合天衣无缝,尤其一出《霸王别姬》,更是誉满京城,为此,两人约定合演一辈子《霸王别姬》。但两人对戏剧与人生关系的理解有本质不同,段小楼深知戏非人生,程蝶衣则是人戏不分。段小楼在认为该成家立业之时迎娶了名妓菊仙(巩俐 饰),致使程蝶衣认定菊仙是可耻的第三者,使段小楼做了叛徒,自此,三人围绕一出《霸王别姬》生出的爱恨情仇战开始随着时代风云的变迁不断升级,终酿成悲剧。 2 | 肖申克的救赎,"主演:蒂姆·罗宾斯,摩根·弗里曼,鲍勃·冈顿",9.5,20世纪40年代末,小有成就的青年银行家安迪(蒂姆·罗宾斯 饰)因涉嫌杀害妻子及她的情人而锒铛入狱。在这座名为肖申克的监狱内,希望似乎虚无缥缈,终身监禁的惩罚无疑注定了安迪接下来灰暗绝望的人生。未过多久,安迪尝试接近囚犯中颇有声望的瑞德(摩根·弗里曼 饰),请求对方帮自己搞来小锤子。以此为契机,二人逐渐熟稔,安迪也仿佛在鱼龙混杂、罪恶横生、黑白混淆的牢狱中找到属于自己的求生之道。他利用自身的专业知识,帮助监狱管理层逃税、洗黑钱,同时凭借与瑞德的交往在犯人中间也渐渐受到礼遇。表面看来,他已如瑞德那样对那堵高墙从憎恨转变为处之泰然,但是对自由的渴望仍促使他朝着心中的希望和目标前进。而关于其罪行的真相,似乎更使这一切朝前推进了一步…… 3 | 罗马假日,"主演:格利高里·派克,奥黛丽·赫本,埃迪·艾伯特",9.1,欧洲某国的安妮公主(奥黛丽·赫本 饰)到访罗马,国务烦身,但她又厌倦繁文缛节。一天晚上,身心俱疲的她偷偷来到民间欣赏夜景,巧遇报社记者乔(格利高里·派克 饰)。二人把手同游,相当快乐。公主更是到乔的家中作客并在那过夜。不料乔无意中发现了公主的真实身份,他决定炮制一个独家新闻,于是乔和朋友、摄影师欧文(埃迪·艾伯特 饰)一起带公主同游罗马,并且偷拍了公主的很多生活照。然而,在接下来与公主的相处中,乔不知不觉恋上了公主。为了保护公主的形象,乔只能忍痛抛弃功成名就的良机,将照片送予了公主。安妮公主在经历了罗马一日假期后,反而体验了自己对国家的责任,毅然返回了大使馆,为了本身的责任而果断抛弃了爱情。 4 | 这个杀手不太冷,"主演:让·雷诺,加里·奥德曼,娜塔莉·波特曼",9.5,里昂(让·雷诺 饰)是名孤独的职业杀手,受人雇佣。一天,邻居家小姑娘马蒂尔德(纳塔丽·波特曼 饰)敲开他的房门,要求在他那里暂避杀身之祸。原来邻居家的主人是警方缉毒组的眼线,只因贪污了一小包毒品而遭恶警(加里·奥德曼 饰)杀害全家的惩罚。马蒂尔德 得到里昂的留救,幸免于难,并留在里昂那里。里昂教小女孩使枪,她教里昂法文,两人关系日趋亲密,相处融洽。 女孩想着去报仇,反倒被抓,里昂及时赶到,将女孩救回。混杂着哀怨情仇的正邪之战渐次升级,更大的冲突在所难免…… 5 | 教父,"主演:马龙·白兰度,阿尔·帕西诺,詹姆斯·肯恩",9.3,40年代的美国,“教父”维托·唐·柯里昂(马龙·白兰度 饰)是黑手党柯里昂家族的首领,带领家族从事非法的勾当,但同时他也是许多弱小平民的保护神,深得人们爱戴。 因为拒绝了毒枭索洛索的毒品交易要求,柯里昂家族和纽约其他几个黑手党家族的矛盾激化。圣诞前夕,索洛索劫持了“教 父”的参谋汤姆,并派人暗杀“教父”;因为内奸的出卖,“教父”的大儿子逊尼被仇家杀害;小儿子麦克(阿尔·帕西诺 饰)也被卷了进来,失去爱妻。黑手党家族之间的矛盾越来越白热化。年老的“教父”面对丧子之痛怎样统领全局?黑手党之间的仇杀如何落幕?谁是家族的内奸?谁又能够成为新一代的“教父”?血雨腥风和温情脉脉,在这部里程碑式的黑帮史诗巨片里真实上演。 6 | 泰坦尼克号,"主演:莱昂纳多·迪卡普里奥,凯特·温丝莱特,比利·赞恩",9.5,1912年4月15日,载着1316号乘客和891名船员的豪华巨轮“泰坦尼克号”与冰山相撞而沉没,这场海难被认为是20世纪人间十大灾难之一。1985年,“泰坦尼克号”的沉船遗骸在北大西洋两英里半的海底被发现。美国探险家洛维特(比尔·帕克斯顿 饰)亲自潜入海底,在船舱的墙壁上看见了一幅画,洛维持的发现立刻引起了一位老妇人(格劳瑞亚·斯图尔特 饰)的注意。已经是101岁高龄的露丝称她就是画中的少女。在潜水舱里,露丝开始叙述当年在船上发生的故事。年轻的贵族少女露丝(凯特·温丝莱特 饰)与穷画家杰克(莱昂纳多·迪卡普里奥 饰)不顾世俗的偏见坠入爱河,然而就在1912年4月14日,一个风平浪静的夜晚,泰坦尼克号撞上了冰山,“永不沉没的”泰坦尼克号面临沉船的命运,罗丝和杰克刚萌芽的爱情也将经历生死的考验,最终不得不永世相隔。老态龙钟的罗丝讲完这段哀恸天地的爱情之后,把那串价值连城的项链“海洋之心”沉入海底,让它陪着杰克和这段爱情长眠海底。 7 | 龙猫,"主演:日高法子,坂本千夏,糸井重里",9.2,影片讲述了草壁家姐妹和森林精灵龙猫相识为友的奇遇经历。因母亲草壁靖子(岛本须美 配音)生病住院,草壁梅(坂本千夏 配音)和草壁五月(日高法子 配音)跟着父亲草壁达郎(糸井重里 配音)一起住到了乡下。一天,小梅在院子里捡橡果子玩耍时意外发现了龙猫(高木均 配音)的踪迹,其后她跟随龙猫到了它们栖息的树洞并与龙猫一起玩耍。后来母亲病重,思念母亲的小梅决定独自去医院探望母亲,却在途中迷路。小月四处寻找小梅却怎么也找不到,正在她万分焦急之时碰到了龙猫,龙猫是否会帮助草壁小月找到小梅呢? 8 | 唐伯虎点秋香,"主演:周星驰,巩俐,郑佩佩",9.2,唐伯虎(周星驰 饰)身为江南四大才子之首,却有道不尽的心酸。宁王想让唐伯虎帮其图谋作反,被唐伯虎拒绝意淫结仇。唐伯虎在与朋友出游时,遇到了貌若天仙的秋香(巩俐 饰)并对她一见钟情,决心要到华府当家丁以追求秋香,唐伯虎被取名华安。期间华太师遇到了宁王上门刁难,幸好有唐伯虎出面相助,并暴露了自己是唐伯虎的身份。秋香才知道华安是自己欣赏的唐伯虎。华夫人跟唐家有怨,因此二人便开始斗法。怎料宁王跟夺命书生再次上门,华夫人不是对手,幸得唐伯虎出手,华夫人也答应把秋香许配给唐伯虎。 9 | 千与千寻,"主演:柊瑠美,入野自由,夏木真理",9.3,本影片讲述了10岁少女的奇幻之旅。千寻( 柊瑠美 配音)跟随父母搬往新家,途中误入一座神庙,来到了另一个世界:一条专门给神仙提供服务的热闹非凡的浴场街。双亲因为吃了给神准备的美食而被变成了猪。小千寻在迷之美少年白龙( 入野自由 配音)的帮助下得以安身,改名为“千”,进了魔女汤婆婆( 夏木真理 配音)经营的大浴场做帮佣,等待机会救出父母回到自己的世界。在这里有口恶心善的烧锅炉的爷爷(菅原文太 配音),有性格爽利热心肠的玲(玉井夕海 配音),交到了许多新朋友。然而要救出双亲,她还必须面临严酷的考验…… 10 | 魂断蓝桥,"主演:费雯·丽,罗伯特·泰勒,露塞尔·沃特森",9.2,第一次世界大战期间,回国度假的陆军中尉罗伊(罗伯特·泰勒 饰)在滑铁卢桥上邂逅了舞蹈演员玛拉(费雯·丽 饰),两人彼此倾心,爱情迅速升温。就在两人决定结婚之时,罗伊应招回营地,两人被迫分离。由于错过剧团演出,玛拉被开除,只能和好友相依为命。不久玛拉得知罗伊阵亡的消息,几欲崩溃,备受打击。失去爱情的玛拉感到一切都失去了意义,为了生存,她和好友不得不沦为妓女。然而命运弄人,就在此时玛拉竟然再次遇到了罗伊。虽然为罗伊的生还兴奋不已,玛拉却因自己的失身陷入痛苦之中。感到一切难以挽回的玛拉潸然离开,独自来到两人最初相遇的地点——滑铁卢桥上… 11 | 乱世佳人,"主演:费雯·丽,克拉克·盖博,奥利维娅·德哈维兰",9.1,美国南北战争前夕,南方农场塔拉庄园的千金斯嘉丽(费·雯丽 饰)爱上了另一个农场主的儿子艾希礼(李斯利·霍华德 饰),遭到了拒绝,为了报复,她嫁给了自己不爱的男人,艾希礼妻子梅兰(奥莉薇·黛·哈佛兰 饰)的弟弟查尔斯。战争期间,斯嘉丽成为寡妇,失去母亲,挑起生活的重担,不再是当初的千金小姐;战争结束后,她又两度为人妻,嫁给了爱她多年的投机商人瑞德(克拉克·盖博 饰)。然而,纵使经历了生活的艰苦,斯嘉丽对艾希礼的感情仍然没有改变。艾希礼妻子梅兰的去世,给了斯嘉丽一个机会,一边是深爱自己的丈夫瑞德,一边是心心念念多年的艾希礼?斯嘉丽会给自己怎样一个不一样的明天? 12 | 喜剧之王,"主演:周星驰,莫文蔚,张柏芝",9.2,尹天仇(周星驰 饰)一直醉心戏剧,想成为一名演员,平时除了做跑龙套以外,还会在街坊福利会里开设演员训练班。此时舞小姐柳飘飘在妈妈桑的带领下来到这里要求学做戏,原来柳飘飘有一段非常不愉快的经历,在尹天仇对她指导的过程中,柳飘飘对尹天仇渐生情愫,同时她也成为了夜总会里当红的小姐。尹天仇受到了极多白眼之后,终于得到了大明星鹃姐(莫文蔚 饰)的赏识,提携他担演新戏中的男主角,但没想到突然把他的角色换掉了,令他失望不已。在片场当场务的卧底警员(吴孟达 饰)身份被识穿,尹天仇阴差阳错的帮忙破了案。之后尹天仇继续活跃在街坊福利会的演员训练班里。 13 | 天空之城,"主演:寺田农,鹫尾真知子,龟山助清",9.1,古老帝国拉比达是一座漂浮在空中的巨大的机器岛,传说那里已经无人居住,蕴藏着巨大的财富。因此,无论军方还是海盗,都在找寻着这座传说中的飞行岛。矿工帕克这天偶遇拉达比继承人希达,两人一见如故。因为希达身上有找寻拉比达帝国的重要物件飞行石,军方和海盗两帮人马都在追杀希达。帕克带着希达一起逃亡,最终都没有逃出军方的手中,希达被军队掳走了。为救朋友,帕克只能选择与海盗合作。帕克与海盗成功救出了希达,同时,他们也发现了军方的邪恶计划。为了阻止军方邪恶计划的实施,他们和海盗一起踏上了寻找拉比达之旅。 14 | 大闹天宫,"主演:邱岳峰,毕克,富润生",9.0,话说在东土傲来国有一座花果山,山上有一尊石猴吸收日精月华化身为一只神猴(邱岳峰 配音),统领着山中的猴子猴孙。为求得一件称心的宝贝,神猴孙大圣潜入龙宫,强硬求来大禹治水时的定海神针如意金箍棒。东海龙王(毕克 配音)心有不甘,于是上天将此事诉诸玉帝(富润生 配音)。玉皇大帝命令太白金星(尚华 配音)下界招安,许以爵位。不知有诈的孙大圣欣然前往,却发现只是负责养马的弼马温。得知受骗的猴王反下天庭,与天兵天将在花果山展开大战…… 15 | 辛德勒的名单,"主演:连姆·尼森,拉尔夫·费因斯,本·金斯利",9.2,1939年,波兰在纳粹德国的统治下,党卫军对犹太人进行了隔离统治。德国商人奥斯卡·辛德勒(连姆·尼森 饰)来到德军统治下的克拉科夫,开设了一间搪瓷厂,生产军需用品。凭着出众的社交能力和大量的金钱,辛德勒和德军建立了良好的关系,他的工厂雇用犹太人工作,大发战争财。1943年,克拉科夫的犹太人遭到了惨绝人寰的大屠杀,辛德勒目睹这一切,受到了极大的震撼,他贿赂军官,让自己的工厂成为集中营的附属劳役营,在那些疯狂屠杀的日子里,他的工厂也成为了犹太人的避难所。1944年,德国战败前夕,屠杀犹太人的行动越发疯狂,辛德勒向德军军官开出了1200人的名单,倾家荡产买下了这些犹太人的生命。在那些暗无天日的岁月里,拯救一个人,就是拯救全世界。 16 | 音乐之声,"主演:朱莉·安德鲁斯,克里斯托弗·普卢默,埃琳诺·帕克",9.0,玛利亚(朱丽·安德鲁斯 饰)是一个年轻活泼的修女,喜欢在大自然下高声歌唱,所以她常常忘记了修道院里的规矩。院长认为玛利亚并不属于规矩严格的修道院。院长与众嬷嬷商量后,决定安排玛利亚到一位名叫特拉普(克里斯托弗·普卢默 饰)上校家当家庭教师。上校的妻子去世多年,留下7个孩子,他要求对孩子严格管教。他告诉玛利亚在他家的家庭教师都做不长久,都是因为孩子的恶作剧。玛利亚果然也遭到了恶作剧,可是这位善良的老师并没有告诉他们的父亲,而是像个母亲一样照顾孩子,很快跟孩子打成一片。上校也渐渐在玛利亚的引导下改变了对孩子们的态度。上校与玛利亚之间发生了感情,他们完婚后回到了已被纳粹占领的奥地利,上校并不想为纳粹办事,一家人准备逃跑…… 17 | 春光乍泄,"主演:张国荣,梁朝伟,张震",9.2,影片讲述了一对同性恋人从香港来到阿根廷,在异国发生争执,分分合合的一段虐恋故事。黎耀辉(梁朝伟 饰)与何宝荣(张国荣 饰)是一对同性恋人,为了有新的开始,他们怀着美丽的梦想离开香港来到阿根廷,却在布宜诺斯艾利斯迷了路。黎耀辉想安下心来过日子,无奈何宝荣于夜夜笙歌中放纵着自己的生命,当何宝荣受伤后回到黎耀辉的住处,他一面想和黎耀辉和好一面又猜疑黎耀辉爱上了别人。于是两人不断产生分歧、争吵,两颗心的距离越来越远…… 18 | 剪刀手爱德华,"主演:约翰尼·德普,薇诺娜·瑞德,黛安·韦斯特",8.8,影片讲述了一个有着剪刀手的机器人爱上人类女孩的故事。发明家(文森特·普莱斯 饰)制造了机器人爱德华(约翰尼·德普 饰),爱德华具备人类的一切肉体和精神功能,但发明家还没来得及为爱德华装上双手就去世了,只留下一双异于常人的剪刀手。发明家死后爱德华独居古堡中,化妆品推销员佩格(黛安娜·维斯特 饰)发现了这个少年,出于对爱德华处境的同情,把他带回了家。爱德华很快以灵巧异常的剪刀手和温和的性格博得了人们的欢迎。佩格的女儿金(薇诺娜·瑞德 饰)也逐渐爱上了爱德华。但是各种意想不到的麻烦也纷至沓来,爱德华和金最终能走到一起吗? 19 | 美丽人生,"主演:罗伯托·贝尼尼,尼可莱塔·布拉斯基,乔治·坎塔里尼",9.3,犹太青年圭多(罗伯托·贝尼尼 饰)邂逅美丽的女教师朵拉(尼可莱塔·布拉斯基 饰),他彬彬有礼的向多拉鞠躬:“早安!公主!”历经诸多令人啼笑皆非的周折后,天遂人愿,两人幸福美满的生活在一起。然而好景不长,法西斯政权下,圭多和儿子被强行送往犹太人集中营。多拉虽没有犹太血统,毅然同行,与丈夫儿子分开关押在一个集中营里。聪明乐天的圭多哄骗儿子这只是一场游戏,奖品就是一辆大坦克,儿子快乐、天真的生活在纳粹的阴霾之中。尽管集中营的生活艰苦寂寞,圭多仍然带给他人很多快乐,他还趁机在纳粹的广播里问候妻子:“早安!公主!”法西斯政权即将倾覆,纳粹的集中营很快就要接受最后的清理,圭多编给儿子的游戏该怎么结束?他们一家能否平安的度过这黑暗的年代呢? 20 | 海上钢琴师,"主演:蒂姆·罗斯,普路特·泰勒·文斯,比尔·努恩",9.2,本片讲述了一个钢琴天才传奇的一生。1900年,Virginian号豪华邮轮上,一个孤儿被遗弃在头等舱,由船上的水手抚养长大,取名1900(蒂姆•罗斯 饰)。1900慢慢长大,显示了出了无师自通的非凡钢琴天赋,在船上的乐队表演钢琴,每个听过他演奏的人,都被深深打动。爵士乐鼻祖杰尼听说了1900的高超技艺,专门上船和他比赛,最后自叹弗如,黯然离去。可惜,这一切的事情都发生在海上,1900从来不愿踏上陆地,直到有一天,他爱上了一个女孩,情愫在琴键上流淌。他会不会为了爱情,踏上陆地开始新的生活,用他的琴声惊艳世界?他将怎样谱写自己非凡的人生。 21 | 黑客帝国,"主演:基努·里维斯,凯瑞-安·莫斯,劳伦斯·菲什伯恩",9.0,不久的将来,网络黑客尼奥(基努·里维斯 饰)对这个看似正常的现实世界产生了怀疑。他结识了黑客崔妮蒂(凯瑞-安·莫斯 饰),并见到了黑客组织的首领墨菲斯(劳伦斯·菲什伯恩 饰)。墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?如何才能打败那些超人一样的特工?尼奥是不是人类的希望?这是黑客的帝国,程序和代码欢迎大家的到来。 22 | 指环王3:王者无敌,"主演:伊莱贾·伍德,伊恩·麦克莱恩,丽芙·泰勒",9.2,魔戒圣战逐渐进入高潮阶段。霍比特人弗罗多(伊利亚·伍德 饰)携带着魔戒,与伙伴山姆(西恩·奥斯汀 饰)以及狡猾阴暗的咕噜(安德鲁·瑟金斯 饰)等前往末日火山,一路上艰难险阻不断。魔君索伦为阻止魔戒的销毁,用尽全力阻挠。另一方面,白袍巫师甘道夫(伊安·麦克莱恩 饰)率中土勇士们镇守刚铎首都——白城米那斯提力斯。魔兽大军压境,黑暗与光明的决战即将来临…… 23 | 加勒比海盗,"主演:约翰尼·德普,凯拉·奈特莉,奥兰多·布鲁姆",8.9,故事发生在17世纪,传说中海盗最为活跃的加勒比海。风趣迷人的杰克·斯伯洛(约翰尼·德普 饰),是活跃在加勒比海上的海盗,拥有属于自己的“黑珍珠”号海盗船。对他来说,最惬意的生活就是驾驶着“黑珍珠”号在加勒比海上游荡,自由自在的打劫过往船只。但不幸的是,他的仇敌,老谋深算的巴尔巴罗萨船长(杰弗里·拉什 饰)偷走了他的“黑珍珠”号。巴伯萨是一个无恶不作的坏蛋,他抢劫了杰克的“黑珍珠号”后,更加猖狂,在加勒比海上横行霸道,一时成为整个加勒比海的霸主。一次,巴伯萨一伙袭击了罗亚尔港小镇,并绑架了还绑架了总督的女儿伊莉莎白·斯万(凯拉·奈特丽 饰)和伊莉莎白青梅竹马的铁匠学徒威尔·特纳(奥兰多·布鲁姆 饰),想方设法救出了狱中的船长杰克,偷来英国皇家舰队最快的“拦截号”军舰迅速向“黑珍珠”追去。在打斗中,威尔和杰克发现,巴尔巴罗萨和他的海盗们身背着咒语,在每一个月光之夜,他们就变成了不死骷髅,而伊莉莎白正是解开咒语的关键。 24 | 哈利·波特与魔法石,"主演:丹尼尔·雷德克里夫,鲁伯特·格林特,艾玛·沃森",9.1,哈利波特是一个孤儿,从小寄养在姨妈家,受尽欺凌。但就在哈利11岁生日的时候,他意外收到了霍格沃茨学院的入学通知书。哈利从该学院派来接他的巨人海格口中得知,这是一间魔法学院,并得知了自己的身世,原来哈利的父母都是伟大的魔法师,在对付伏地魔的战斗中双双献身,唯有哈利幸免于难。哈利进入霍格沃茨后,表现出了超乎想象的飞行天赋,得到麦格教授的推荐进入了格兰芬多的魁地奇球队。另一方面,哈利发现霍格沃茨学院内有一股黑暗势力似乎在暗暗滋长,揭开谜团的关键就在有凶恶的三头犬守护的房间内。哈利、罗恩和赫敏三个好朋友决定探个究竟。 25 | 蝙蝠侠:黑暗骑士,"主演:克里斯蒂安·贝尔,希斯·莱杰,艾伦·艾克哈特",9.3,从亲眼目睹父母被人杀死的阴影中走出来的“蝙蝠侠”,经历了成长之后,已经不再是那个桀骜不的孤单英雄了。在警官吉姆·戈登和检查官哈维·登特的通力帮助下,“蝙蝠侠”无后顾之忧地继续满世界的奔波,与日益增长起来的犯罪威胁做着永无休止的争斗,而他所在的高谭市,也是进展最为明显的地方,犯罪率以一种惊人的速度持续下降着,毕竟对方是能够上天入地的“蝙蝠侠”,不借两个胆子谁还敢造次呢?不过像高谭这种科技与污秽并存的城市,平静是不可能维持太久的,果不其然,新一轮的混乱很快就席卷了整个城市,人们再一被被恐慌所笼罩着,而声称愿意为这一切负责的,自然就是所有混乱的源头以及支配者--“小丑”了。先不管“小丑”掀起一个又一个犯罪的狂潮的最终目的为何,他的企图都是邪恶的,所作所为更是早就危害到了高谭市民的正常生活……其中自然包括了“蝙蝠侠”身边几个非常重要的人,而他需要做的,就是将这股新的危机全部亲自用手捏得粉碎。然而在面对着这个有史以来最具针对性、最恶毒的对手时,“蝙蝠侠”却不得不从他的地下军械库里搬出每一件能够用得上的高科技武器,还得时刻纠结着为他曾经信仰的一切寻找答案。 26 | 楚门的世界,"主演:金·凯瑞,劳拉·琳妮,诺亚·艾默里奇",8.9,楚门(金·凯瑞 饰)是一个平凡得不能再平凡的人,除了一些有些稀奇的经历之外——初恋女友突然失踪、溺水身亡的父亲忽然似乎又出现在眼前,他和绝大多数30多岁的美国男人绝无异样。这令他倍感失落。他也曾试过离开自己生活了多年的地方,但总因种种理由而不能成行。直到有一天,他忽然发觉自己似乎一直在被人跟踪,无论他走到哪里,干什么事情。这种感觉愈来愈强烈。楚门决定不惜一切代价逃离这个他生活了30多年的地方,去寻找他的初恋女友。但他却发现自己怎样也逃不出去。真相其实很残忍。 27 | 射雕英雄传之东成西就,"主演:张国荣,梁朝伟,张学友",8.9,金轮国王妃(叶玉卿 饰)与表哥欧阳锋(梁朝伟 饰)有染,为霸占江山,他们毒死了国王,但没找到传国玉玺。得知玉玺在前往九宫山找寻其师父求助的三公主(林青霞 饰)手里后,欧阳锋企图抢到手但没成功。糊涂国师(张曼玉 饰)在淫威下屈服,查出三公主的具体下落,欧阳锋乘火箭金靴追赶,却误脱落一只插死刚出关的王重阳(钟镇涛 饰),奄奄一息的王重阳恳求适逢路过的三公主找到其师弟周伯通(刘嘉玲 饰)代为报仇。逃到九宫山的三公主邀得师弟黄药师(张国荣 饰)与师妹(王祖贤 饰)相助,再加上前来寻找表妹的洪七(张学友 饰)、找到真心人才能成仙的段智兴(梁家辉 饰),一场与欧阳锋的生死恶战蓄势待发…… 28 | 无间道,"主演:刘德华,梁朝伟,黄秋生",9.1,1991年,三合会会员刘建明(刘德华 饰)听大佬韩琛(曾志伟 饰)指示加入警队,七年间已升至警长。92年,警察学员陈永仁(梁朝伟 饰)被逼退学作三合会卧底,现时大佬正是韩琛。2002年,一场失败的重案组突袭令双方卧底浮出水面。重案组从陈永仁手中获悉一批毒品交易情报,锁紧目标人物韩琛,没料情报被刘健明泄出,双方行动均告失败。但此事将双方均有卧底的事实暴露,引发双方高层清除内鬼的决心。命运迥异又相似的刘健明和陈永仁开始在无间道的旅程中接受严峻考验。 29 | 指环王2:双塔奇兵,"主演:伊莱贾·伍德,伊恩·麦克莱恩,丽芙·泰勒",9.1,第一部结尾,博罗米尔被强兽人杀死之后,两个哈比族人皮平和梅利也被强兽人绑架,阿拉贡(维果·莫特森 饰)、莱格拉斯(奥兰多·布鲁姆 饰)、金雳一路追踪强兽人,营救皮平和梅利,遇到了“复活”的白袍巫师甘道夫(伊恩·麦克凯伦 饰)。此时,投降索伦的白袍巫师萨鲁曼控制了人类洛汗王国的王,并派出大量的强兽人军队,准备消灭人类。阿拉贡、莱格拉斯和金雳在甘道夫的带领下,帮助洛汗王国对抗邪恶力量的入侵。 幸运的皮平和梅利被会说话的树人救了出来,并且遇到“复活”的甘道夫,在甘道夫的授意下,树人保护了两人的安全,并且带他们参加树人大会,大会上,树人们讨论对待中土大战的态度:是继续当中立者,逆来顺受,还是奋起反抗? 身负重任的弗罗多(伊利亚·伍德 饰)和山姆继续向末日山前进,一路上被咕噜跟踪,弗罗多依靠至尊魔戒的力量,成为了咕噜的主人,在咕噜的带领下,他们到了末日山的入口黑门。就在他们准备进入之时,博罗米尔的弟弟法拉米尔出现,将他们带回了刚铎。弗罗多又遇上了新的危机:法拉米尔想利用至尊魔戒的力量对抗萨鲁曼的攻击…… 30 | 机器人总动员,"主演:本·贝尔特,艾丽莎·奈特,杰夫·格尔林",9.3,影片讲述了遥远的未来发生在两个机器人之间的关于爱和希望的故事。公元2805年,人类已迁离满布垃圾的地球。约七百年前,大型企业“大卖家”(BnL)鼓吹的无节制消费主义制造了大量垃圾。为净化地球,人类迁居外太空,留下多台环境清理机器人“瓦力”(本·贝尔特 配音)进行清扫作业。数百年后,地球只余下一台仍然运作的瓦力。他日日夜夜孤独地工作,一天,他发现了一株正在萌芽的植物。没过多久,一台新型探测机器人“伊娃”(艾丽莎·奈特 配音)降落地球进行盘查作业。瓦力对伊娃一见钟情,带她回家并向她展示自己囤积了多年的收藏品。出乎意料的是,伊娃探测到植物后立即进入休眠状态,瓦力用尽方法都不能让她苏醒。其后一艘太空舰前来接收伊娃,瓦力勇敢地攀附在太空舰外壁随之进入太空,到达了人类居住的太空船“公理号”…… 31 | 教父2,"主演:阿尔·帕西诺,罗伯特·德尼罗,黛安·基顿",9.0,影片主要讲述第二代教父麦克·柯里昂(阿尔·帕西诺 饰)的奋斗历程,同时回忆了第一代教父维多·柯里昂(罗伯特·德尼罗 饰)创业的艰辛,反映了不同历史时期,两代教父的事业、家庭生活。麦克为儿子托尼举行圣餐仪式和庆祝活动的当夜,麦克在家中遭到袭击,凶手被人灭口,面临接管家族事业以来的重重危机,麦克回忆起了父亲维多·柯里昂年轻时在美国的创业历程。麦克一边调查袭击的真相,一边继续开展赌博、酒店等生意,和另一个黑帮人物海门罗斯斗智斗勇,不断扩大势力。终于,麦克的不法行为引起了政府的关注,麦克受到一系列的指控;同时,麦克的家庭也遇到了危机,夫妻感情濒临破裂;而最让麦克痛心的,却是家族中,亲人的背叛。和第一代教父其乐融融的家庭生活比起来,麦克无疑很失败。麦克怎么样面对事业、家庭的双重危机?为什么两代教父会有截然不同的家庭生活?让我们自己在影片中寻找答案。 32 | 拯救大兵瑞恩,"主演:汤姆·汉克斯,马特·达蒙,汤姆·塞兹摩尔",8.9,瑞恩(马特·达蒙 饰 )是二战期间的美国伞兵,被困在了敌人后方。更不幸的是,他的三个兄弟全部在战争中死亡,如果他也遇难,家中的老母亲将无依无靠。美国作战总指挥部知道了这个情况,毅然决定组织一个小分队前往救援,其中包括米勒上尉(汤姆·汉克斯 饰 )和翻译厄本(杰里米·戴维斯 饰)。然而,敌方危险重重,他们一路上随时与死亡打交道。他们非常怀疑,到底值不值得冒着八个人的生命危险,去搭救一个人。大家一路辗转寻找瑞恩,对于这次搭救行动,有人不满,有人热忱,有人好奇。大家一次次闻到死神的气息,瑞恩的获救付出了沉重的代价。 33 | 活着,"主演:葛优,巩俐,牛犇",9.0,影片讲述了曾经的纨绔子弟福贵输光家产后,与家人自力更生,在苦难中坚持“活着”的故事。富少福贵(葛优 饰)嗜赌成性,妻子家珍(巩俐 饰)屡劝无果后带着女儿凤霞离开了他,当夜,福贵输光所有家产。这气死了他的父亲,福贵也被迫变卖母亲首饰,租了间破屋和母亲过活。一年后,家珍手拉小凤霞(张路 饰)怀抱刚出世的儿子有庆(董飞 饰)回到家中,福贵开始靠演皮影戏过起安份守己的日子。但好景不常,内战时期,福贵被国民党抓去当劳工,一番辗转终回到家乡与一家人团圆后却发现凤霞因病变成哑巴,而在后来的大跃进运动和文化大革命中,逆境也一直如影相随。 34 | 天堂电影院,"主演:菲利普·努瓦雷,赛尔乔·卡斯特利托,蒂兹亚娜·罗达托",9.2,意大利南部小镇,古灵精怪的小男孩多多(萨瓦特利·卡西欧 饰)喜欢看电影,更喜欢看放映师艾佛特(菲利浦·诺瓦雷 饰)放电影,他和艾佛特成为了忘年之交,在胶片中找到了童年生活的乐趣。 好心的艾佛特为了让更多的观众看到电影,搞了一次露天电影,结果胶片着火了,多多把艾弗达从火海中救了出来,但艾弗达双目失明。多多成了小镇唯一会放电影的人,他接替艾佛特成了小镇的电影放映师。多多(马克·莱昂纳蒂 饰)渐渐长大,他爱上了银行家的女儿艾莲娜(艾萨·丹尼埃利 饰)。初恋的纯洁情愫美如天堂,但是一对小情侣的海誓山盟被艾莲娜父亲的阻挠给隔断了,托托去服兵役,而艾莲娜去念大学。伤心的多多在艾佛特的鼓励下,离开小镇,追寻自己生命中的梦想…… 30年后,艾佛特去世,此时的多多已经是功成名就的导演,他回到了家乡,看到残破的天堂电影院,追忆往昔,唏嘘不已。多多意外地遇见了艾莲娜,往日种种,真相大白,他们如何面对彼此? 35 | 哈尔的移动城堡,"主演:倍赏千惠子,木村拓哉,美轮明宏",9.0,继母因无力负担生活,将苏菲和她的两个姐姐都送到了制帽店去当学徒。两个姐姐很快先后就离开了制帽店去追寻各自的梦想,只有苏菲坚持了下来。一天,小镇旁边来了一座移动堡垒,传说堡垒的主人哈尔专吸取年青姑娘的灵魂,所以小镇的姑娘都不敢靠近。一个恶毒的巫婆嫉妒苏菲的制帽技术,用巫术把她变成了一个80岁的老太婆,而且苏菲还不能对别人说出自己身中的巫术。无奈,苏菲决定独自一人逃离小镇。天黑了,虚弱的苏菲没走多远,来到了移动城堡。心想自己已经是老太婆了,苏菲壮着胆子走进了城堡。不想,遇到了和她遭遇相同的火焰魔。两人约定彼此帮助对方打破各自的咒语…… 36 | 忠犬八公的故事,"主演:Forest,理查·基尔,琼·艾伦",9.3,本影片讲述了忠犬和主人之间的感人故事。八公(Forest 饰)是一条谜一样的犬,因为没有人知道它从哪里来。教授帕克(理查·基尔 饰)在小镇的火车站拣到一只走失的小狗,冥冥中似乎注定小狗和帕克教授有着某种缘分,帕克一抱起这只小狗就再也放不下来,最终,帕克对小狗八公的疼爱感化了起初极力反对养狗的妻子卡特(琼·艾伦 饰)。八公在帕克的呵护下慢慢长大,帕克上班时八公会一直把他送到车站,下班时八公也会早早便爬在车站等候,八公的忠诚让小镇的人家对它更加疼爱。有一天,八公在帕克要上班时表现异常,居然玩起了以往从来不会的捡球游戏,八公的表现让帕克非常满意,可是就是在那天,帕克因病去世。帕克的妻子、女儿安迪(萨拉·罗默尔 饰)及女婿迈克尔(罗比·萨布莱特 饰)怀着无比沉痛的心情埋葬了帕克,可是不明就里的八公却依然每天傍晚五点准时守候在小站的门前,等待着主人归来…… 37 | 东邪西毒,"主演:张国荣,梁朝伟,刘嘉玲",8.9,在恋人(张曼玉 饰)负气嫁给兄长的当晚,欧阳锋(张国荣 饰)黯然离开白陀山,走进沙漠某个小镇,成为一名杀手中介人。他的朋友、风流剑客黄药师(梁家辉 饰)每年都来小镇与他畅饮,酒话里有关白陀山的消息令他忘却往事的念想渐次演变成自欺行为。黄药师只是表面风流。他迷恋好友“盲武士”(梁朝伟 饰)的妻子桃花(刘嘉玲 饰),后者在丈夫死后,永远地离开了他;而对迷恋他的女人慕容嫣(林青霞 饰),他又不愿兑现曾经随口说出的承诺,这使得慕容嫣迷失于自己的身份中。与欧阳锋构成短暂“买凶杀人”关系的洪七(张学友 饰)、村姑(杨采妮 饰)等人,也都有一段只有他们自己才知、不愿回首的痛苦过往。 38 | 幽灵公主,"主演:松田洋治,石田百合子,田中裕子",8.9,为了拯救危难中的村民,阿斯达卡的右手中了凶煞神的诅咒。他卡只好离开亲人往西方流浪以寻找解除诅咒的方法。旅途中他遇到了由幻姬大人带领的穷苦村民在麒麟兽的森林里开采铁矿,提炼矿石。白狼神莫娜和她养大的人类女孩“幽灵公主”桑对幻姬恨之入骨,因为她们觉得幻姬带领众人破坏了森林。想帮助人类的阿斯达卡被桑深深吸引,他理解她,但为了帮助穷人又不得不和她作战。一次战斗中,阿斯达卡被麒麟兽所救,他的立场更加摇摆不定。这时,以疙瘩和尚为首的一群人来杀麒麟兽,幻姬以火枪击毙了麒麟,麒麟的头被疙瘩和尚抢走。愤怒的麒麟的灵魂为夺回自己的头,大肆破坏着森林。阿斯达卡和桑联手决定帮麒麟夺回头颅。 39 | 盗梦空间,"主演:莱昂纳多·迪卡普里奥,渡边谦,约瑟夫·高登-莱维特",9.2,影片讲述了以道姆·科布为首的盗梦团队为执行拆解费舍尔集团企业的目的,进入集团继承人意识中进行植梦的过程。道姆·科布(莱昂纳多·迪卡普里奥 饰)与同事阿瑟(约瑟夫·戈登-莱维特 饰)和纳什(卢卡斯·哈斯 饰)在一次针对日本能源大亨齐藤(渡边谦 饰)的盗梦行动中失败,反被齐藤利用。齐藤威逼利诱因遭通缉而流亡海外的柯布帮他拆分他竞争对手的公司,采取极端措施在其唯一继承人罗伯特·费舍尔(希里安·墨菲 饰)的深层潜意识中种下放弃家族公司、自立门户的想法。为了重返美国,柯布偷偷求助于岳父迈尔斯(迈克尔·凯恩 饰),吸收了年轻的梦境设计师艾里阿德妮(艾伦·佩吉 饰)、梦境演员艾姆斯(汤姆·哈迪 饰)和药剂师约瑟夫(迪利普·劳 饰)加入行动。在层层递进的梦境中,柯布不仅要对付费希尔潜意识的本能反抗,还必须直面已逝妻子梅尔(玛丽昂·歌迪亚 饰)的处处破坏,实际情况远比预想危险得多…… 40 | 搏击俱乐部,"主演:爱德华·诺顿,布拉德·皮特,海伦娜·伯翰·卡特",8.8,杰克(爱德华·诺顿 饰)是一个大汽车公司的职员,患有严重的失眠症,对周围的一切充满危机感和憎恨。一个偶然的机会,杰克遇上了卖肥皂的商人泰勒(布拉德·皮特 饰),一个浑身充满叛逆、残酷和暴烈的痞子英雄,并因为自己公寓失火而住进了泰勒破旧不堪的家中。两人因缘际会地成为了好朋友,并创立了“搏击俱乐部”:一个让人们不戴护具而徒手搏击,宗旨在于发泄情绪的地下组织。俱乐部吸引了越来越多的人,逐渐发展成为一个全国性的地下组织,而泰勒也以自己个人的魅力,吸引着那些盲目的信徒。俱乐部的成员们到处滋事打架、大肆破坏,泰勒本人的行为也越来越疯狂。 杰克对于“搏击俱乐部”的现况及泰勒的行为越来越无法忍受,和泰勒发生争执,泰勒离开了他。然而,杰克发现,他走到何处都无法摆脱泰勒的影子,他开始思考:我到底是谁? 41 | 疯狂原始人,"主演:尼古拉斯·凯奇,艾玛·斯通,瑞恩·雷诺兹",9.5,原始人克鲁德一家六口在老爸瓜哥(尼古拉斯·凯奇 配音)的庇护下生活。每天抢夺鸵鸟蛋为食,躲避野兽的追击,每晚听老爸叙述同一个故事,在山洞里过着一成不变的生活。大女儿小伊(艾玛·斯通 配音)是一个和老爸性格截然相反的充满好奇心的女孩,她不满足一辈子留在这个小山洞里,一心想要追逐山洞外面的世界。没想到世界末日突然降临,山洞被毁,一家人被迫流离失所。展现在他们眼前的是一个崭新绚丽却又充满危险的新世界,四处都是食人鸟兽和叫不出名字的奇怪生物。危机中,他们遇到了游牧部落族人盖(瑞恩·雷诺兹 配音),凭借他超凡的创造力和革新思想,帮助克鲁德一家一次一次躲过重重困难,渐渐取代了老爸的地位,变成克鲁德全家人的偶像,也和小伊暗生情愫。但这个来历不明的神奇男子旅行的目的究竟是神马?在末日来临时,哪里才是一家人的安居之所?就这样,顽固保守的老爸,叛逆的大女儿小伊,神奇男子盖,像小疯狗一样的baby,疯狂老太奶奶,二缺的弟弟,以及温柔的妈妈,一起踏上了寻找新家园的旅途。他们一路上与拳击猴搏斗,与食人花捉迷藏,还差点酿成了森林大火……旅途中,他们与看似凶猛实则很萌的小鳄犬 、鹦鹉虎成为了朋友,一次又一次化险为夷,途中还发明了许多“高科技”产品。一行人在影片中展开了一场闹腾而又惊险的旅程。 42 | 阿凡达,"主演:萨姆·沃辛顿,佐伊·索尔达娜,米歇尔·罗德里格兹",9.0,战斗中负伤而下身瘫痪的前海军战士杰克·萨利(萨姆·沃辛顿 饰)决定替死去的同胞哥哥来到潘多拉星操纵格蕾丝博士(西格妮·韦弗 饰)用人类基因与当地纳美部族基因结合创造出的 “阿凡达” 混血生物。杰克的目的是打入纳美部落,外交说服他们自愿离开世代居住的家园,从而SecFor公司可砍伐殆尽该地区的原始森林,开采地下昂贵的“不可得”矿。在探索潘多拉星的过程中,杰克遇到了纳美部落的公主娜蒂瑞(佐伊·索尔达娜 饰),向她学习了纳美人的生存技能与对待自然的态度。与此同时,SecFor公司的经理和军方代表上校迈尔斯(史蒂芬·朗 饰)逐渐丧失耐心,决定诉诸武力驱赶纳美人…… 43 | V字仇杀队,"主演:娜塔莉·波特曼,雨果·维文,斯蒂芬·瑞",8.8,在未来英国的极权统治下,一位名叫伊维(娜塔莉·波特曼 饰)的年轻女子死里逃生,被一名叫V(雨果·维文 饰)的带面具怪人救出,V具有不可思议的战斗能力,其诡计变化多端,手段极其残忍。当他摧毁了伦敦两个标志性建筑并控制了被政府摆布的电视广播以后,一场革命爆发了。市民被煽动,并企图以起义来对抗政府的专治与镇压。不料,伊维意外的得知了V的神秘背景,同时也发现了关于自己的一个巨大真相,给人们带来的正义与自由却把整个社会推向残酷与堕落的深渊。 44 | 风之谷,"主演:岛本须美,永井一郎,坂本千夏",8.9,工业文明的高度发展,却最终带来灾难,一场为期7天的虫族毁灭战争摧毁了人类文明。一千年后,工业文明遗留下来的症结仍在困扰这个星球。带有强烈毒性的植物组成了令人望而却步的“腐海”森林,随着时间的推移,腐海有条不紊地向四周蔓延,蚕食周边世界。在一片腐海森林的旁边,居住着一群御风而行的人类。女主角娜乌茜卡和族人依靠海风的力量抵御着有毒孢子的侵蚀,过着平静祥和的生活。直到某一天,战火烧到了这里。西方强国特洛梅意欲重新建立人类霸权,他们计划统一周边诸国,然后向虫族发起总攻。另一方面,一千年前曾主导摧毁人类的上古怪兽“猛怪”重现人间。毁灭战争一触即发,人类的命运将会如何…… 45 | 放牛班的春天,"主演:热拉尔·朱尼奥,尚-巴堤·莫里耶,玛丽·布奈尔",8.9,1949年的法国乡村,音乐家克莱门特(杰勒德·尊诺 饰)到了一间外号叫“塘低”的男子寄宿学校当助理教师。学校里的学生大部分都是难缠的问题儿童,体罚在这里司空见惯,学校的校长(弗朗西斯·贝尔兰德 饰)只顾自己的前途,残暴高压。性格沉静的克莱门特尝试用自己的方法改善这种状况,他重新创作音乐作品,组织合唱团,决定用音乐的方法来打开学生们封闭的心灵。 然而,事情并不顺利,克莱门特发现学生皮埃尔·莫安琦(尚·巴堤·莫里耶 饰)拥有非同一般的音乐天赋,但是单亲家庭长大的他,性格异常敏感孤僻,怎样释放皮埃尔的音乐才能,让克莱门特头痛不已;同时,他与皮埃尔母亲的感情也渐渐微妙起来。 46 | 当幸福来敲门,"主演:威尔·史密斯,贾登·史密斯,坦迪·牛顿",8.9,克里斯·加纳(威尔·史密斯 饰)用尽全部积蓄买下了高科技治疗仪,到处向医院推销,可是价格高昂,接受的人不多。就算他多努力都无法提供一个良好的生活环境给妻儿,妻子(桑迪·牛顿 饰)最终选择离开家。从此他带着儿子克里斯托夫(贾登·史密斯 饰)相依为命。克里斯好不容易争取回来一个股票投资公司实习的机会,就算没有报酬,成功机会只有百分之五,他仍努力奋斗,儿子是他的力量。他看尽白眼,与儿子躲在地铁站里的公共厕所里,住在教堂的收容所里…… 他坚信,幸福明天就会来临。 47 | 十二怒汉,"主演:亨利·方达,李·科布,马丁·鲍尔萨姆",9.1,一个在贫民窟长大的18岁少年因为杀害自己的父亲被告上法庭,证人言之凿凿,各方面的证据都对他极为不利。十二个不同职业的人组成了这个案件的陪审团,他们要在休息室达成一致的意见,裁定少年是否有罪,如果罪名成立,少年将会被判处死刑。十二个陪审团成员各有不同,除了8号陪审员(亨利·方达 饰)之外,其他人对这个犯罪证据如此明确的案子不屑一顾,还没有开始讨论就认定了少年有罪。8号陪审员提出了自己的“合理疑点”,耐心地说服其他的陪审员,不断进行案件重演,在这个过程中,他们每个人不同的人生观也在冲突和较量…… 48 | 速度与激情5,"主演:范·迪塞尔,保罗·沃克,道恩·强森",9.2,距离上一次充满激情的速度生涯已经过去了两年,两位驰骋赛车届的风云人物多米尼克(范·迪塞尔 饰)与布莱恩(保罗·沃克 饰)厌倦了见不得光的躲避警察的生活,为了让自己彻底获得自由,他们决定干最后一票来完成这个目标,而任务地点则是巴西的里约热内卢。多米尼克和布莱恩组成了一支终极赛车团队,和当地的触目惊心的腐败政府展开对战,而神秘的第三方势力也插手了他们的交锋。另一方面,声名显赫的FBI探员卢克(道恩·强森 饰)依然在执着的追捕着多米尼克和布莱恩,他率领精英突击队对两人进行了全面围攻,结果在里约大败而归。不过卢克可不是什么好惹的主,彻底被激怒的他决定设下天罗地网,来彻底的围剿多米尼克和布莱恩。在里约的贫民窟和公路上,一场你死我活的惊心追逐就此上演…… 49 | 驯龙高手,"主演:杰伊·巴鲁切尔,杰拉德·巴特勒,亚美莉卡·费雷拉",9.0,维京岛国的少年小嗝嗝(杰伊·巴鲁切尔 配音)是部落统领伟大的斯托里克(杰拉德·巴特勒 配音)的儿子,他非常想像自己的父亲一样亲手屠龙——这些飞龙是岛上维京人放牧羊群的主要天敌——但他每次出现在部落屠龙的战斗中都只给大家徒增烦恼。在一次对抗飞龙的战斗中,希卡普偷偷用射龙器击伤了一只最神秘的“夜之怒龙”,并背着族人放生、豢养,甚至驯服了这只龙,还给它起名“无牙”。希卡普的神秘行径引起了一同训练屠龙技巧的女孩阿斯特丽德(亚美莉卡·费雷拉 配音)的怀疑。阿斯特丽德发现了希卡普的秘密,却同时被身骑“无牙”御风而飞的美妙体验所震撼。格雷决定在屠龙成人礼上向远征归来的斯托里克和族人讲明真相,说服大家放弃屠龙,却偏偏弄巧成拙,害得“无牙”被俘,一场更大的灾难就在眼前…… 50 | 勇敢的心,"主演:梅尔·吉布森,苏菲·玛索,帕特里克·麦高汉",8.8,威廉·华莱士童年时,其父、苏格兰民族英雄马索·华莱士在与英军的斗争中牺牲,他开始接受父亲好友的指导,学习苏格兰文化和武术。青年华莱士(梅尔·吉布森 饰)学成回到故乡,向美丽的少女梅伦求婚,不想梅伦被英军抢去且遭杀害。在广大村民“英雄之后”的呼声中,华莱士率众揭竿起义,并与苏格兰贵族罗伯结成联盟,但不久他发现,苏格兰贵族考虑的只是自身的利益。英王为缓和局势,派伊莎贝拉(苏菲·玛索 饰)前去和华莱士谈判,由于英王只想收买华莱士,根本不顾苏格兰人民的自由和平等,谈判失败,但这一切并不为伊莎贝拉所知。伊莎贝拉归国后发现事情真相,且知晓英王正策划阴招,忙送信给华莱士,而两人的爱情,也在战争与阴谋中悄然滋生。 51 | 神偷奶爸,"主演:史蒂夫·卡瑞尔,杰森·席格尔,拉塞尔·布兰德",9.0,超级坏蛋格鲁(史蒂夫·卡瑞尔 配音)在听说埃及金字塔被盗的新闻后不满市面上新贼辈出,决定在纳法利欧博士(拉塞尔·布兰德 配音)的帮助下建造火箭升空盗取月亮。在向坏蛋银行贷款的过程中,格鲁盗取的收缩射线枪被新贼维克托(杰森·席格尔 配音)抢走。为了夺回收缩射线枪,格鲁决定领养三位孤儿——玛戈(米兰达·卡斯格拉夫 配音)、伊迪丝(达娜·盖伊 配音)和阿格蕾丝(埃尔希·费舍 配音),利用她们进入维克托的城堡兜售饼干的机会实施偷盗,计划成功后再偷偷处理掉三个小孩。然而在平凡的日常相处中,格鲁却发现自己越来越离不开这三个小鬼,但这样的感情用事却将严重影响周密的盗月计划…… 52 | 飞屋环游记,"主演:爱德华·阿斯纳,乔丹·长井,鲍勃·彼德森",8.9,卡尔(爱德华·阿斯纳 配音)是一个以卖气球为生的老头。自从老伴艾丽病逝之后,卡尔就变得沉默寡言起来。回想过去和艾丽在一起的日子,他们曾经多次都梦想着到南美洲的天堂瀑布去探险,可是为生计奔波的两人,却一直没有时间去完成这次旅行。难道就这样抱着遗憾过一辈子吗?这时候,政府计划要在卡尔所住的地方建造一幢摩天大楼,而在这里住了一辈子的卡尔根本不愿意搬家,但政府已经打算将这个难缠的钉子户送到养老院去。卡尔知道政府接下来的打算,他决定,要带着这幢保存了他一生回忆的屋子一起去旅行!在一大堆五颜六色气球的牵引下,整幢房子飞向了空中,卡尔朝着梦想之地进发——不过老卡尔却万万没有想到,这幢飞屋里闯入了一个不速之客,他就是9岁的胖乎乎小男孩罗素(乔丹·长井 配音)。这个小男孩骗老卡尔说是不小心才闯进来的,其实他是因为参加了野外探险者协会,而如果要成为高级会员,必须拿到一枚徽章,而拿到这枚徽章的条件就是帮助一位老人。罗素选中的帮助对象,就是脾气怪怪的老卡尔。老卡尔一开始并不想让罗素跟自己一起旅行,因此策划了很多办法想把这个讨厌的小孩从飞屋里丢下去,但此刻飞屋被卷进了暴风雨云里,卡尔和罗素一起度过了这个难关,罗素也告诉卡尔,他手中的GPS可以让卡尔更加精确的到达旅行的目的地——天堂瀑布。于是,这一老一少的旅途开始了。老不乐意的卡尔在路上还是想了不少办法踢走罗素,最后都无功而返,两人一路斗气地到了南美,在南美的丛林里,他们结识了很多平时根本见不到的动物,有长着长长大嘴的大鸟,还有会说话的小狗……他们都成为了飞屋里的旅客,随着卡尔和罗素一起旅行。眼看就要到目的地天堂瀑布了,爷孙两人却碰上了一个利欲熏心的探险家查尔斯(克里斯托弗·普卢默 配音),查尔斯认为卡尔和罗素破坏了他的好事,因此决定要拆掉他们的飞屋,让他们坠毁……究竟卡尔和罗素如何度过这场危机,顺利地到达天堂瀑布呢? 53 | 黑客帝国3:矩阵革命,"主演:基努·里维斯,雨果·维文,凯瑞-安·莫斯",8.8,第二集中,尼奥(基努·里维斯 饰)没有能从摧毁内部“母体”,他的身体在真实世界的飞船上陷于昏迷,思想却被困在介于“母体”和真实世界的中间地带,这个地方由“火车人”控制。墨菲斯(劳伦斯·菲什伯恩 饰)和崔妮蒂(凯莉-安·摩丝 饰)等人知道了尼奥的情况,在守护天使的带领下,找到了“火车人”的控制者梅罗纹奇,经过一番激斗,将尼奥救了出来。此时,电子乌贼部队对锡安发起了猛烈的攻击,人类组织所有机甲战士展开顽强的抵抗,形势危在旦夕;尼奥和崔妮蒂驾驶了一艘飞船克服重重困难,到达机器城市,尼奥终于见到了机器世界的统治者“机器大帝”,双发谈判并达成了协议:尼奥除掉不受“母体”控制的史密斯,以换取锡安的和平。在“母体”中,尼奥和史密斯展开了关系人类生死存亡的最后决斗。 54 | 怦然心动,"主演:玛德琳·卡罗尔,卡兰·麦克奥利菲,艾丹·奎因",8.9,布莱斯(卡兰·麦克奥利菲 饰)全家搬到小镇,邻家女孩朱丽(玛德琳·卡罗尔 饰)前来帮忙。她对他一见钟情,心愿是获得他的吻。两人是同班同学,她一直想方设法接近他,但是他避之不及。她喜欢爬在高高的梧桐树上看风景。但因为施工,树被要被砍掉,她誓死捍卫,希望他并肩作战,但是他退缩了。她的事迹上了报纸,外公对她颇有好感,令他十分困惑。她凭借鸡下蛋的项目获得了科技展第一名,成了全场焦点,令他黯然失色。她把自家鸡蛋送给他,他听家人怀疑她家鸡蛋不卫生,便偷偷把鸡蛋丢掉。她得知真相,很伤心,两人关系跌入冰点。她跟家人诉说,引发争吵。原来父亲一直攒钱照顾傻弟弟,所以生活拮据。她理解了父母,自己动手,还得到了他外公的鼎力相助。他向她道歉,但是并未解决问题。他开始关注她。鸡蛋风波未平,家庭晚宴与午餐男孩评选又把两人扯在了一起…… 55 | 三傻大闹宝莱坞,"主演:阿米尔·汗,黄渤,卡琳娜·卡普尔",9.1,本片根据印度畅销书作家奇坦·巴哈特(Chetan Bhagat)的处女作小说《五点人》(Five Point Someone)改编而成。法兰(马德哈万 R Madhavan 饰)、拉杜(沙曼·乔希 Sharman Joshi 饰)与兰乔(阿米尔·汗 Aamir Khan 饰)是皇家工程学院的学生,三人共居一室,结为好友。在以严格著称的学院里,兰乔是个非常与众不同的学生,他不死记硬背,甚至还公然顶撞校长“病毒”(波曼·伊拉尼 Boman Irani 饰),质疑他的教学方法。他不仅鼓动法兰与拉杜去勇敢追寻理想,还劝说校长的二女儿碧雅(卡琳娜·卡普 Kareena Kapoor 饰)离开满眼铜臭的未婚夫。兰乔的特立独行引起了模范学生“消音器”(奥米·维嘉 Omi Vaidya 饰)的不满,他约定十年后再与兰乔一决高下,看哪种生活方式更能取得成功。 本片获孟买电影博览奖最佳影片、最佳导演、最佳配角(波曼·伊拉尼)、最佳剧本等六项大奖,并获国际印度电影协会最佳影片、最佳导演、最佳剧情、最佳摄影等十六项大奖。 56 | 断背山,"主演:希斯·莱杰,杰克·吉伦哈尔,米歇尔·威廉姆斯",9.0,美国怀俄明州的西部,沉默寡言的农夫恩尼斯(希斯·莱杰 饰)和热情开朗的牛仔杰克(杰克·吉伦希尔 饰)一道被派到山上牧羊,那里人迹罕至,他们只有与羊群为伴,生活单调无味。一个天寒地冻的夜晚,在酒精与荷尔蒙的作用下,他们做了“不该做的事情”,也就此他们在断背山上度过了人生中最美好的时光。季节性放牧结束,迫于世俗压力,杰克和恩尼斯不舍地与对方分离并各自结婚生子。恩尼斯迎娶了自幼相识的阿尔玛,并有了两个可爱的女儿;杰克到了德州,在妻子露琳家族的扶植下事业顺利,还有了个儿子。虽然彼此真心相应,他们只能每年定期约会。一边知情的阿尔玛痛苦无比,而他们又无法满足一年只有几天的团聚。这时意外发生…… 57 | 闻香识女人,"主演:阿尔·帕西诺,克里斯·奥唐纳,加布里埃尔·安瓦尔",8.8,查理(克里斯·奥唐纳 饰)是一个普通的中学生,他因为见证着一件恶作剧但又不想出卖朋友,于是面临着一道艰难的选择题——要么坦白,要么被学校勒退。而史法兰(阿尔·帕西诺 饰)是一个退伍军官,因为意外失明,人生从顶点的辉煌滑落谷底。自从两人的人生有了交集,命运的转折慢慢清晰。史法兰打算结束失去了意义的生活,于是在查理的陪伴下,尽情享受着人生最后一趟出行。他吃最美味的佳肴,买光鲜的汽车,在狭窄的街道上飚车,住在豪华的套房里,跟随陌生女子的袅袅香水味,跳一段优雅性感的探戈……极乐的疯狂后,他拿枪对准了自己的头颅。然而,查理声嘶力竭的劝阻改变了一切,曙光亦渐渐在这个老人心中重新升起,二人情深如父子。史法兰在学校礼堂激昂演说,挽救了查理的前途,讽刺了学校的伪善。二人在互相鼓舞中得到重生。 58 | 鬼子来了,"主演:姜文,姜宏波,陈强",8.9,抗日战争末期,河北某偏僻乡村挂家台的老实村民马大三(姜文 饰)迎来棘手难题:某人将分别装有日本鬼子花屋小三郎(香川照之 饰)和汉奸翻译董汉臣的麻袋扔给他,声称不日来取,却迟迟不见其来。厚道的马大三一边将两人当亲爹娘侍奉,一边同村人商议计策,最后决定将两人处死,但终因“天意”不了了之。巧舌如簧的董汉臣为自救,设法令挂甲台村民与花屋小三郎签署合约,称将花屋安全送到日方宪兵队后,村民可得到几大车粮食。马大三与众村民兴高采烈赶到宪兵队,将俘虏交由日方,然而日方并无“以其礼还其礼”的教养。 59 | 飞越疯人院,"主演:杰克·尼科尔森,路易丝·弗莱彻,威尔·萨姆森",8.8,影片讲述了一个被迫送进疯人院的罪犯想带领大家逃离的故事。麦克墨菲(杰克·尼科尔森 饰)为了逃避监狱里的强制劳动,被送进了精神病院。麦克墨菲多次挑战了医院严格的管理制度,受到护士长瑞秋(路易丝·弗莱彻 饰)的百般阻挠。麦克再也无法忍受疯人院的生活,他联合病友,高大的印第安人酋长(威尔·萨姆森 饰)等,开始自己飞越疯人院的计划…… 60 | 美国往事,"主演:罗伯特·德尼罗,詹姆斯·伍兹,伊丽莎白·麦戈文",9.1,二十年代的美国,纽约少年“面条”(罗伯特·德尼罗 饰)和几个同龄朋友一起认识了聪明狡黠的“麦大”(詹姆斯·伍兹 饰),他们开始从事走私活动。不久,面条在一场械斗中杀伤人命,被关进监牢。若干年后,“面条”出狱,当时的小伙伴们已经变成了健壮的青年人,在“麦大”的带领下,他们开始了一系列抢劫、盗窃、敲诈活动。随着犯罪活动的不断深入,“麦大”似乎被胜利冲昏了头脑,竟然把美国联邦储备银行也列入了行动目标。“面条”不忍眼看好友走向毁灭,偷偷打电话报警,想逼迫“麦大”收手。警察与“面条”的朋友展开激烈枪战,“麦大”等人全部被杀。“面条”带着深深的悔恨和痛苦,离开纽约,回到年少时生长的地方。三十五年过去了,几近垂暮的“面条”重新回到纽约的伤心地,他遇见了少时的朋友和旧情人,而当年“麦大”他们的死,背后竟然包含着出乎意料的阴谋。 61 | 少年派的奇幻漂流,"主演:苏拉·沙玛,伊尔凡·可汗,塔布",9.1,故事开始于蒙特娄,也结束于蒙特娄。一名在找寻灵感的作家(拉菲·斯波 饰)无意间得知派·帕帖尔(伊尔凡·可汗 饰)的传奇故事。派的父亲(阿迪尔·胡山 饰)开了一家动物园。因这样特殊的生活环境,少年派(苏拉·沙玛 饰 )对信仰与人的本性自有一套看法。在派17岁那一年,他的父母决定举家移民加拿大以追求更好的生活,而他也必须离开他的初恋情人。在前往加拿大的船上,他们遇见一位残忍成性的法国厨师(杰拉尔·德帕迪约 饰)。当天深夜在茫茫大海中,原本令派感到刺激无比的暴风雨一瞬间就成了吞噬货船的大灾难。派却奇迹般地活了下来,搭着救生船在太平洋上漂流,而且有一名最令人意想不到的同伴——理查德·帕克,一只孟加拉老虎。神奇的冒险旅程就这样意外开始了…… 62 | 致命魔术,"主演:休·杰克曼,克里斯蒂安·贝尔,迈克尔·凯恩",8.8,十九世纪中后期的伦敦,人们还尚未对现代文明有着更加深刻而科学的认识。因此魔术师这一职业在这座堪称国际化的大都市里有着颇高的地位。尤其是贵族出身的魔术师罗伯特·安吉尔(休·杰克曼 饰)更是这一行业的代表人之一。他的同行阿尔弗莱德·伯登(克里斯蒂安·贝尔 饰)虽身家并没有前者的高贵,却也凭借一身的好本事在行内也占得一席之地。实际上,安吉尔与伯登很小的时候就是好朋友,由于两人皆天资聪慧,双双醉心于魔术表演并各自有着不同的特长和本领。但让长大成人后现实中的一切包括名和利种种,渐渐将一对好友推向了敌对的两面。成了同行里的红眼冤家。为了能够成为伦敦城内著名的维多利亚音乐大厅里最受欢迎的魔术师,安吉尔同伯登之间展开了长久而艰苦的争斗。他们一边加强自己的技艺,一边不惜互派卧底,打探彼此的底细,然后加以揭穿或破坏。生性有些偏执的伯登擅长一种能够令观众们难以置信的分身术,他能够在两个封闭的容器内自由穿越,此招数一度将安吉尔的铁杆观众几乎都吸引了过来。安吉尔自然也不甘示弱,他为了能够打败伯登,开始求助于科学家尼姑拉·特斯拉(大卫·鲍伊 饰),请他发明一些奇特的表演道具,其中就包括一个短距离穿越时空的机器,这样在舞台上,他就能以一种不可思议的方式战胜伯登。然而,争强好胜的伯登心头渐渐起了邪念,他想到了更加狠毒的办法来对抗安吉尔。两人的魔术之争也因此逐渐升级、愈演愈烈,直到他们的争斗酿出了一桩惨不忍睹的血案…… 63 | 美丽心灵,"主演:罗素·克劳,詹妮弗·康纳利,艾德·哈里斯",8.8,本片是关于20世纪伟大数学家小约翰·福布斯-纳什的人物传记片。小约翰·福布斯-纳什(拉塞尔·克劳 饰)在念研究生时,便发表了著名的博弈理论,该理论虽只有短短26页,却在经济、军事等领域产生了深远的影响。但就在小约翰·福布斯-纳什蜚声国际时,他的出众直觉因为精神分裂症受到困扰,然而这并没阻止他向学术上的最高层进军的步伐,在深爱他的妻子艾丽西亚(珍妮弗·康纳利 饰)的鼓励和帮助下,他走得虽然艰缓,却始终没有停步,而最终,凭借十几年的不懈努力和顽强意志,他如愿以偿。 64 | 哈利·波特与死亡圣器(下),"主演:丹尼尔·雷德克里夫,鲁伯特·格林特,艾玛·沃森",9.0,当又一次和伏地魔(拉尔夫·费因斯 饰)的意识连通,哈利·波特(丹尼尔·雷德克里夫 饰)断定最后一件魂器藏在霍格沃茨,于是和罗恩(鲁伯特·格林特 饰)、赫敏(艾玛·沃森 饰)一同返回阴云密布的学校。在好友们的帮助下,他们成功驱逐了斯内普(艾伦·瑞克曼 饰),然而觉察到哈利目的的伏地魔则率领徒众向霍格沃茨逼近。食死徒、摄魂怪、巨人疯狂涌入这所有着悠久历史的魔法学校,正邪决战旋即爆发,一时间血雨腥风,死伤无数。从斯内普的眼泪中,哈利不仅了解到父辈的故事,也证实了藏缅于他体内最后的秘密。在此之后,他也和伏地魔迎来了最后的对决…… 65 | 夜访吸血鬼,"主演:汤姆·克鲁斯,布拉德·皮特,克斯汀·邓斯特",8.8,18世纪的路易斯安娜州,丧失妻女痛不欲生的庄园主路易(布拉德·皮特 饰)遇上了吸血鬼莱斯塔特(汤姆·克鲁斯 饰),被其施法变成吸血鬼。路易心存人性,不愿意吸血杀人,靠吸食动物的血为生,而莱斯塔特则一心要把路易斯教导成一个真正的吸血同类。在新奥尔良,路易禁不起诱惑吸了小女孩克萝迪娅(克尔斯滕·邓斯特 饰)的血,而莱斯塔特则不顾路易斯的反对把克萝迪娅也变成了吸血鬼。三个人组成了一个奇特的家庭。几十年过去了,克萝迪娅开始怨恨莱斯塔特剥夺了他真正的人生,她设计杀死了莱斯塔特,和路易周游世界,过着既像父女、又像情人的生活,寻找同类,也寻找着自身存在的意义。在巴黎,他们遇上了以阿蒙(安东尼奥·班德拉斯 饰)为首的一群吸血鬼,聚居在剧院地下,过着和他们迥然不同的生活,阿蒙给了路易许多教导,想成为路易的新伙伴,为此,路易和克萝迪娅之间出现了裂痕,最终,酿成了无可挽回的悲剧。1988年,路易斯返回了新奥尔良,向一个年轻记者马洛伊(克里斯琴·斯莱特 饰)讲述了自己的经历,讲述了吸血鬼长生不死背后的哀伤,不料,马洛伊在听完之后却被深深地吸引,一个新的吸血鬼的故事,将由此开始。 66 | 大话西游之月光宝盒,"主演:周星驰,莫文蔚,吴孟达",9.6,孙悟空(周星驰 饰)护送唐三藏(罗家英 饰)去西天取经路上,与牛魔王合谋欲杀害唐三藏,并偷走了月光宝盒,此举使观音萌生将其铲除心思,经唐三藏请求,孙悟空被判五百年后重新投胎做人赎其罪孽。五百年后孙悟空化身强盗头头至尊宝。当遇见预谋吃唐僧肉的妖怪姐妹蜘蛛精春三十娘(蓝洁瑛 饰)和白骨精白晶晶(莫文蔚 饰)时,因为五百年前孙悟空曾与白晶晶有过一段恋情,至尊宝与她一见钟情,但因菩提老祖将二人妖怪身份相告,至尊宝仍带领众强盗开始与二妖展开周旋,过程中,白晶晶为救至尊宝打伤春三十娘,自己也中毒受伤,为了救白晶晶,至尊宝去找春三十娘,遭白晶晶误会,绝望自杀,至尊宝开始用月光宝盒以期使时光倒流。 67 | 蝙蝠侠:黑暗骑士崛起,"主演:克里斯蒂安·贝尔,迈克尔·凯恩,加里·奥德曼",8.9,八年前,蝙蝠侠(克里斯蒂安·贝尔 饰)在黑夜中销声匿迹,一瞬间,他从一位大英雄变成了一个流亡者。因涉嫌杀害地区检察官“双面人”哈维·登特(艾伦·艾克哈特 饰),黑暗骑士和戈登警长(加里·奥德曼 饰)为了大局着想,牺牲了自己的一切。一时间,他们的努力也一度奏效。在打击犯罪的“登特行动”的重压之下,高谭市的犯罪活动有所遏制。  但这一切随着狡猾的盗贼猫女(安妮·海瑟薇 饰)的到来发生了改变,她这次的出现肩负着神秘任务。然而危险却不止于此。一个名叫贝恩(汤姆·哈迪 饰),脸戴面具的恐怖分子出现了,他对高谭市的恐怖计划迫使布鲁斯停止了自我放逐。但即使他重新披上蝙蝠侠的战袍,可能也不是贝恩的对手…… 68 | 钢琴家,"主演:艾德里安·布洛迪,艾米莉娅·福克斯,米哈乌·热布罗夫斯基",8.8,史标曼(艾德里安·布洛迪 饰)是波兰一家电台的钢琴师。二战即将爆发之时,他们全家被迫被赶进华沙的犹太区。在战争的颠沛流离中,家人和亲戚最终被纳粹杀害,而标曼本人也受尽种种羞辱和折磨,他侥幸得到一位朋友的帮助,暂时有了藏身之处。战争愈加猛烈,朋友不得不抛下 他回老家寻得安全的住所养育儿女。此时史标曼恶病缠身,却还要在搜捕中逃亡。在废墟的阁楼上他遇见了一名德国军官,在军官的要求下他弹奏了钢琴曲。美妙的琴声令德国军官萌发了恻隐之心,他暗暗帮助标曼直到俄军对波兰的解放到来…… 69 | 无敌破坏王,"主演:约翰·C·赖利,萨拉·西尔弗曼,简·林奇",9.0,无敌破坏王(约翰·C·赖利 配音)生活在一个80年代出品的低精度游戏中。他的设定身份是一个反派,每天的生活就是在游戏《快手阿修》中大搞破坏,其后由玩家操作的英雄人物快手阿修(杰克·麦克布瑞尔 配音) 会及时赶到进行修补,赢得奖牌,包揽一切荣耀。身为反派,破坏王厌倦了自己的生活,眼看阿修被胜利者的光环围绕,自己却日复一日在无趣中过活,他终于决定改变。单纯的他以为只要自己也能得到一枚奖牌,就可以摆脱反派的身份,于是某日在游戏厅歇业后,破坏王偷偷离开了自己的游戏,前去闯荡其他电子游戏的世界。在途中,破坏王结识了来自《英雄使命》的冷酷队长(简·林奇 配音)和来自90年代糖果赛车游戏《甜蜜冲刺》的小女孩云妮(萨拉·丝沃曼 配音)。后者梦想着能上场比赛,但其身份也不允许她梦想成真。破坏王所属的游戏《快手阿修》由于失去了他被认定为系统错误,如不尽快返回,则游戏就会被永久删除;而《甜蜜冲刺》的游戏世界则在悄悄酝酿着一场巨大的、威胁到整个游戏世界的阴谋。这也许是无敌破坏王实现梦想的机会,但也可能是一条不归路…… 他可以扭转乾坤,成为一名真正的英雄吗? 70 | 倩女幽魂,"主演:张国荣,王祖贤,午马",9.1,书生宁采臣(张国荣 饰)收账不成,无处可归,遂夜宿鬼寺兰若寺,遇上侠士燕赤霞(午马 饰),二人成为邻居。一日偶遇艳女小倩(王祖贤 饰),二人两情相悦,但小倩乃是被树妖姥姥控制的鬼魂,专门迷惑精壮男子代姥姥吸取阳气。小倩见宁采臣心地善良不忍加害,并与他感情逐渐加深。宁采臣欲救小倩脱离姥姥魔掌,但苦于姥姥功力深厚,小倩无法脱离其魔掌。二人遂向燕赤霞求救...... 71 | 本杰明·巴顿奇事,"主演:布拉德·皮特,凯特·布兰切特,塔拉吉·P·汉森",8.8,飓风正在侵袭美国新奥尔良,一位病危的老妇睁开了她的睡眼。老妇名叫戴茜(凯特·布兰切特 饰),她叫女儿凯若琳(朱莉娅·奥蒙德 饰)为她阅读一本日记。这本日记的作者叫本杰明·巴顿(布拉德·皮特 饰)。本杰明出生在第一次世界大战停战之时,但生来便像个老人的他被父亲当作怪物,被遗弃在了养老院。本杰明在养老院与老人们一起生活。但谁都没有想到,本杰明逆向发育——越活越年轻!也许“越活越年轻”是某些人的梦想,但真正这样成长的本杰明却有了别人无法理解的烦恼与快乐。穿越半世纪的世界变革,本杰明身处其中,感受别人感受不到的感受。为何母亲会让自己念这本日记?本杰明·巴顿此人与母亲有什么关系?凯若琳陷入了深深的疑惑与好奇之中。 72 | 初恋这件小事,"主演:马里奥·毛瑞尔,平采娜·乐维瑟派布恩,阿查拉那·阿瑞亚卫考",8.8,初中生小水(平采娜·乐维瑟派布恩 饰)相貌平平,家境一般,所以在学校里并不受重视。但是她心地善良,又有一群死党,日子过得倒也开心。某天,她遇见了帅气的学长阿亮(马里奥·毛瑞尔 饰),春心萌动,无 法遏制。她喜欢看他踢足球,看他拍照,如痴如狂。上英语课时,她不停地给死党传纸条 表达对阿亮的爱慕。然而,英语老师则指出她除了英语一无是处。回到家,叔叔从美国捎来了父亲的消息,说如果她能考全校第一,就可以去美国。于是,她按下决心要努力加油。某天,小水等人在买饮料时,碰到篮球队员蛮横插队。阿亮挺身而出,为她们教训了对方,并挨了校长的责骂。小水也第一次听说,阿亮的父亲因为射失点球而退役的事情,理解了他心中的隐痛。由于舞蹈队是给美女准备的,所以小水等一干姐妹准备在话剧社大展身手,没想到学长也来到这个社团。两人还扮演王子公主,他们的恋情会由此展开么?…… 73 | 新龙门客栈,"主演:张曼玉,梁家辉,甄子丹",8.8,宦官专权的明朝末年,东厂曹少钦(甄子丹 饰)假造圣旨杀害了忠良杨宇轩,并想斩草除根杀死其后代。侠女邱莫言(林青霞 饰)、江湖义士贺虎(任世官 饰)等人冒死救出忠良后代后,逃至边关沙漠里的龙门客栈,与杨宇轩部下周淮安(梁家辉 饰)会合。龙门客栈实则黑店,老板娘金镶玉(张曼玉 饰)利用乱世,以美貌和风骚作诱饵杀人越货聚敛钱财,但她却为英俊潇洒的周淮安动了真心。为了摸清潜藏于龙门客栈中的出关暗道,周淮安将计就计,答应与金镶玉成亲…… 74 | 甜蜜蜜,"主演:黎明,张曼玉,曾志伟",9.2,改革开放初期,黎小军(黎明 饰)告别女友小婷(杨恭如 饰)从无锡来到香港讨生活,期望有天挣到大钱把小婷接来与之风风光光地成婚,没料想日子会比想象中的难熬许多。黎小军在快餐店与同样从大陆到港讨生活但避讳谈自己身份的李翘(张曼玉 饰)结识后,因为共同喜爱邓丽君,两人人在异乡的孤独都有了某种程度的缓解,并在交往的过程中生出了真爱,可是世事难料,两人最终无奈分手,黎小军成了小婷的老公,李翘跟了在黑社会做事的豹哥(曾志伟 饰)。然而因为邓丽君,两人的缘分并没到此为止。 75 | 触不可及,"主演:弗朗索瓦·克鲁塞,奥玛·希,安娜·勒尼",9.1,因为一次跳伞事故,白人富翁菲利普(弗朗索瓦·克鲁塞 饰)瘫痪在床,欲招聘一名全职陪护。由于薪酬高,应聘者云集,个个舌灿莲花,却无法打动他的心。直到黑人德瑞斯(奥玛·赛 饰)的出现才让他作出决定。德希斯刚从监狱出来,背负家庭重担,一心只想寻张辞退信以申领救济金,而且他明显对女助理的兴趣要远大于这份工作。但是菲利普还是一眼相中了这个小伙子。于是,德瑞斯开始了一个月的试用期。虽然舒适的豪宅环境让他倍感虚荣,但是他仍面临很多挑战:不仅要为菲利普作身体复健,还得给他洗浴、灌肠、拆信、穿丝袜等。起初,两人的思维方式与价值观大相径庭,但是,随着了解的不断深入,他们成为了朋友…… 76 | 熔炉,"主演:孔刘,郑有美,金智英",8.8,来自首尔的哑语美术老师仁浩(孔刘 饰)来到雾津,应聘慈爱聋哑人学校。天降大雾,他意外撞车,维修时邂逅了人权组织成员柔珍(郑有美 饰)。仁浩妻子早亡,8岁女儿天生哮喘由祖母照看,所以他不辞辛苦谋职养家。然而,双胞胎的校长与教导主任竟逼仁浩索贿5千万韩元。同时,仁浩逐渐发现学 校笼罩着一种紧张压抑的气氛,令人窒息。尤其有三个孩子引人关注:聪颖的金妍斗(金贤秀 饰)和贪吃的陈宥利(郑仁絮 饰)总是躲闪。全民秀(白承焕 饰)的弟弟自杀身亡,他总是满脸淤青。下课后,仁浩还听到女厕所中有呼喊与哭泣,在门卫的阻拦下他未深究。之后。他意外目睹了校长行贿警察,教导员毒打民秀,宿导溺罚妍斗的行径。一个惊天的隐秘被慢慢揭开,真相令韩国震惊…… 77 | 大话西游之大圣娶亲,"主演:周星驰,朱茵,莫文蔚",8.8,至尊宝(周星驰 饰)被月光宝盒带回到五百年前,遇见紫霞仙子(朱茵 饰),被对方打上烙印成为对方的人,并发觉自己已变成孙悟空。 紫霞与青霞(朱茵 饰)本是如来佛祖座前日月神灯的灯芯(白天是紫霞,晚上是青霞),二人虽然同一肉身却仇恨颇深,因此紫霞立下誓言,谁能拔出她手中的紫青宝剑,谁就是她的意中人。紫青宝剑被至尊宝于不经意间拔出,紫霞决定以身相许,却遭一心记挂白晶晶(莫文蔚 饰)的至尊宝拒绝。后牛魔王救下迷失在沙漠中的紫霞,并逼紫霞与他成婚,关键时刻,至尊宝现身。 78 | 小鞋子,"主演:默罕默德·阿米尔·纳吉,Kamal Mirkarimi,Behzad Rafi",9.1,家境贫寒的男孩Ali(Amir Farrokh Hashemian)帮妹妹Zahra(Bahare Seddiqi)取修补好的鞋子时,不慎将鞋子弄丢,为了不被父(Mohammad Amir Naji)、母(Fereshte Sarabandi )责罚,他央求Zahra暂时保密,说两人可以替换着穿他的鞋子上学,并答应一定会帮她买双新鞋子。Ali原本指望用他和父亲进城打工挣的钱帮Zahra买双新鞋,父亲的意外受伤打消了他的美梦。看到全市长跑比赛季军的奖品是一双运动鞋时,Ali决定参加比赛,但是他错过了报名日期。几经哀求,老师(Dariush Mokhtari )破例让实力出众的Ali参加了比赛。比赛场上,Ali不断提醒自己,一定要得第三名! 79 | 素媛,"主演:李来,薛耿求,严志媛",9.1,她(李莱 饰)是一个美丽平凡的小女孩,和爸爸妈妈生活在位于街角的家中。家里经营着以她的名字素媛命名的杂货店,母亲(严智媛 饰)作为老板娘日夜忙碌不得闲暇,父亲则在工厂干着繁重的工作。在那个飘雨的早上,素媛打着雨伞独自上学。在离学校近在咫尺的地方,她遭遇一个相貌猥琐、酒气冲天的大叔,由此开启了她的悲剧之旅。柔嫩的小花遭到暴风雨无情摧残,受伤的岂止枝枝叶叶,更是那迎着阳光无忧成长的心。无良媒体铺天盖地大肆渲染,作为受害者的素媛一家仿佛成了周身污秽的耻辱之人,被四周诧异好奇的目光所包围。妈妈悲痛欲绝,几近崩溃。爸爸全力保护女儿,但受伤的小天使却拒绝爸爸的靠近。问凶之路伴随着天使的治愈旅程,美丽的女孩可会再露灿烂笑容? 80 | 萤火之森,"主演:内山昂辉,佐仓绫音,后藤弘树",9.0,某年夏天,6岁小女孩竹川萤来到爷爷家度假,她闯进了传说住满妖怪的山神森林。正当她因为迷路而焦急万分的时候,一个戴着狐狸面具的大男孩出现在她面前,并引领着萤找到回家的路。虽然萤分外感激,可是男孩却禁止她碰触自己的身体,原来这名叫银的男孩并非人类,他一旦被人类碰触就会烟消云散。在此后的日子里,萤和银成为好朋友,他们走遍了森林的每一个角落玩耍。日复一日,年复一年,每到夏天的时候萤就会如约来到森林和好朋友见面。她遵守着和银的约定,无论如何也不碰触银的身体。随着年龄的增长,萤和银对彼此的情感都悄悄发生了变化,他们共同期待相聚的日子,共同期待拥抱对方…… 81 | 窃听风暴,"主演:乌尔里希·穆埃,塞巴斯蒂安·科赫,马蒂娜·格德克",9.0,1984年的东德,整个社会笼罩在国家安全局的高压统治之下,特工魏斯曼(乌尔利希·穆厄 饰)奉命监听剧作家德莱曼(塞巴斯蒂安·寇治 饰)及其女友演员克里斯蒂娜(玛蒂娜·杰蒂克 饰)的生活,监听过程中,魏斯曼渐渐对这家人的生活产生了兴趣,开始暗中帮助他们。一篇刊登在西德《明 镜》报上的文章引起了特工头目的注意,他们认为这篇文章是德莱曼写的,并逮捕了克里斯蒂娜,希望能够从她口中得出她丈夫的秘密?而审问克里斯蒂娜的正是魏斯曼…… 82 | 穿条纹睡衣的男孩,"主演:阿萨·巴特菲尔德,维拉·法米加,大卫·休里斯",9.0,八岁男孩布鲁诺(阿萨·巴特菲尔德 饰)一家随着纳粹军官父亲的一纸调令,由柏林搬迁到了乡下。失去了朋友们的布鲁诺很快对新家附近的“农庄”产生了兴趣,那里有一群身穿“条纹睡衣”的人终日忙碌,并且其中一个为布鲁诺一家服务,他形容肮脏,态度慎微。周遭环境和布鲁诺的举止让母亲暗暗担忧,但纳粹父亲制止家中任何怀疑既定政策的行为。布鲁诺偷偷结识了铁丝网另一边的同龄男孩施穆尔,并时常带给他食物吃。在紧张的家庭氛围和姐姐向成人世界的变化中,施穆尔是布鲁诺惟一的朋友。某日布鲁诺决定,去铁丝网的另一边,以便见到施穆尔的父亲…… 83 | 地球上的星星,"主演:塔奈·切赫达,阿米尔·汗,达席尔·萨法瑞",8.8,对于8岁的男孩伊夏(达席尔·萨法瑞 饰)来说,世界是充满了惊奇和快乐的万花筒,他正在用一切他能够想到的方式和这个陌生的世界进行着交流,同时也充分的享受着大地万物慷慨的赠与。可是,这样的伊夏却是成年人眼中的问题儿童,他的成绩不好,在班上的排名靠后, 脑子里还充满了各种匪夷所思的鬼点子,在又一次闯下大祸后,忍无可忍的父母将他送往了寄宿学校。   虽然伊夏的新生活并没有什么改变,但在内心里,和父母分离的生活让他感到闷闷不乐,这时,一位名叫尼克(阿米尔·汗 饰)的美术老师走进了他的生活。和以往所见到的固守成规的老师不同,尼克主张让学生们保留自己的个性和思想,自由的发展。在和尼克相处的日子里,伊夏和尼克都慢慢的成熟了起来。 84 | 时空恋旅人,"主演:瑞秋·麦克亚当斯,多姆纳尔·格里森,比尔·奈伊",8.9,蒂姆(多姆纳尔·格利森 饰)21岁了,他的老爸(比尔·奈伊 饰)告诉他,他们家族的男人都有时光旅行的超能力,可以回到过去。于是蒂姆将信就疑地试了一下,回到了夏天,在那里他试图改变和暗恋对象的关系,却发现怎么穿越时空都不能让不爱你的人爱上你。之后蒂姆来到了伦敦,成为了一个律师。他爱上了一个漂亮的姑娘玛丽(瑞秋·麦克亚当斯 饰),他通过几次时空旅行,努力地想成为玛丽的男朋友。再后来,他又试图通过时光旅行,去挽回一场失败的话剧,去改善妹妹的生活,去更好地和亲人、朋友相处,度过生命中的每一天。 85 | 借东西的小人阿莉埃蒂,"主演:志田未来,神木隆之介,大竹忍",8.8,虽然患有心脏方面的疾病,但是少年翔(神木隆之介 配音)的父母依然对他疏于呵护。为了准备即将到来的手术,翔来到了位于偏远乡间的姨婆(竹下景子 配音)家静养。姨婆家位于一片幽静的丛林中,这是一幢有着上百年历史的欧式别墅。这里除了生活着姨婆和女佣阿春(树木希林 配音)外,还有一个奇特的三口之家,“借东西一族”——小人阿莉埃蒂(志田未来 配音)和她的爸爸(三浦友和 配音)妈妈(大竹忍 配音),他们生活在别墅的地板下,只有几公分高,过着不为人类察觉的生活。遇到所需的日常用品时,便会在夜深人静之时偷偷潜入厨房借出来。翔无疑中瞥见阿莉埃蒂的身影,他有心接近这些传说中的小人,却不知不觉打扰了他们的生活…… 86 | 恐怖直播,"主演:河正宇,李璟荣,李大为",8.8,韩国首尔某个平凡的早上,广播电台Daily Topic节目的主持人尹英华(河正宇 饰)正就税率改革与听众进行连线,这时一个自称住在首尔昌信洞的普通工人朴鲁圭打入电话,大肆抱怨超高的电费和相关部门对他的威胁。尹英华颇不耐烦,以偏离主题为由强行切断电话。谁知连线无法单方面由电台方面中断,愤怒的朴鲁圭继续抱怨,并扬言炸掉汉江大桥。尹英华不以为然,进而怂恿对方想做就做,谁知话音刚落,窗外的麻浦大桥便炸作废墟。大惊失色的尹英华很快冷静下来,他决定利用这次难得的机会打一次事业的翻身仗。在他的主持下,针对恐怖分子的连线直播就此展开,无关良知的节目拉开帷幕…… 87 | 7号房的礼物,"主演:柳承龙,郑镇荣,朴信惠",8.9,1997年,只有6岁儿童智商的智障男子李龙久(柳成龙 饰)和可爱的女儿艺胜(葛素媛 饰)相依为命,生活虽然简单清贫,却充满幸福。某天,执着为女儿买美少女战士书包的龙久意外卷入一起幼童诱拐奸杀案,而死者竟是警察局长的女儿。龙久懵懂无知,搞不清状况,昏头昏脑就被投入监狱。在7号牢房中,聚集着走私犯蘇杨浩(吴达洙 饰)、诈骗犯崔春浩(朴元尚 饰)、通奸犯姜万范(金正泰 饰)、恐吓犯老徐(金基灿 饰)和抢劫犯申奉植(郑万植 饰)等五毒俱全的“社会渣滓”。龙久孩子般纯洁的心渐渐感动了这几个“大坏蛋”,他们甚至不惜冒险将艺胜带入牢房与父亲相会。黑暗冰冷的监牢内,7号牢房阳光满满…… 88 | 海豚湾,"主演:里克·奥巴瑞,路易·西霍尤斯,哈迪·琼斯",8.9,日本和歌山县太地,是一个景色优美的小渔村,然而这里却常年上演着惨无人道的一幕。每年,数以万计的海豚经过这片海域,他们的旅程却在太地戛然而止。渔民们将海豚驱赶到靠近岸边的一个地方,来自世界各地的海豚训练师挑选合适的对象,剩下的大批海豚则被渔民毫无理由地赶尽杀绝。这些屠杀,这些罪行,因为种种利益而被政府和相关组织所隐瞒。理查德·贝瑞年轻时曾是一名海豚训练师,他所参与拍摄电影《海豚的故事》备受欢迎。但是,一头海豚的死让理查德的心灵受到强烈的震撼。从此,他致力于拯救海豚的活动。不顾当地政府和村民百般阻挠,他和他的摄影团队想方设法潜入太地的海豚屠杀场,只为将罪行公之于众,拯救人类可爱的朋友…… 89 | 忠犬八公物语,"主演:仲代达矢,春川真澄,井川比佐志",9.0,1923年,日本秋田县大馆市天降大雪,近藤家纯种秋田犬产仔,赠与县土木科长间濑。后者将其中一犬转赠东京帝国大学教授上野秀次郎(仲代达矢 饰)驯养。上野的独生女千鹤子对此欢欣鼓舞,而上野夫妇却面露难色。后来,千鹤子(石野真子 饰)谈恋爱,竟怀了男友的孩子。男友专程登门造访。上野与之对谈,后者诚惶诚恐,坦言要对其女儿负责,事不宜迟,即日便举行婚礼,上野闻听此言,转怒为喜。千鹤子出嫁后,上野旋即把全部的心血与爱都投注在幼犬身上,并取名为阿八。每日上下班,阿八必在涩谷车站等候,一年四季,风雨无阻,令路人叹为观止,成为地方一道风景,主仆之情感动天地…… 90 | 上帝之城,"主演:亚历桑德雷·罗德里格斯,艾莉丝·布拉加,莱安德鲁·菲尔米诺",8.9,巴西里约热内卢的贫民窟,这里是“上帝之城”,更是魔鬼也会叹息着转身的地方。阿炮(亚历山大·罗德里格斯 饰)带着我们到了这里,他见证了这里二十多年来被残暴、贪婪、复仇、野心、背叛、掠夺所裹挟的混乱生活以及最终导致的一场灾难性的黑帮争斗。虽然从小就要辗转于匪徒间求生存,但胆小怕事的性格与自我保护的本能却使他一直能平安度日。60年代初,阿毛、阿夹和阿呆是这里的“少年三侠”,在抢劫完旅馆之后,他们三人分道扬镳,阿夹重回上帝的怀抱,而阿呆和阿毛纷纷付出了生命的代价。70年,当年“少年三侠”手下的小弟小豆子(道格拉斯·席尔瓦 饰)靠着自己的心狠手辣,不停地吞并别人的地盘,成为了贫民区的“小霸王”,生意也从抢劫升级到了更为暴利的毒品买卖,和他一起飞黄腾达的还有班尼(Phellipe·哈根森 饰)。班尼认识了美丽的安迪丽卡(艾莉丝·布拉加 饰),准备归隐,在送别的晚会上,他意外被对头杀害,悲痛之下,“小霸王”集合人手给班尼报仇,帮派之间的厮杀就此开始。此时的阿炮,机缘巧合下成为了杂志社的见习摄影师,他的相机,照下的却是孩子们持枪核弹的狰狞,和帮派间无休无止的仇杀。 91 | 辩护人,"主演:宋康昊,郭度沅,吴达洙",8.8,1978年,只有高中学历的宋佑硕(宋康昊 饰)通过多年的艰苦努力,终于通过司法考试,并在成为法官后很快转行成为一名律师。他敏锐地从最新政策中嗅到商机,以不动产代书业务起家。虽然被同行讥讽为随时随地派发名片的夜店小弟,但佑硕不以为忤,一步一步朝着心中的目标迈进。他依靠赚来的钱让妻儿过上富足的生活,也还了七年前在饭店大婶那里欠下的良心债。进入20世纪80年代,韩国民主化斗争愈演愈烈。佑硕全然不管窗外事,关起门来继续赚钱。然而社会的巨变已经不容他置身事外,饭店大婶的儿子朴镇宇因从属的釜山读书联合会被控为左翼社团而遭到逮捕,更受到残酷的虐待和不公的指控。虽然爱钱却更重感情的佑硕,就这样走上了为民主辩护的道路…… 92 | 七武士,"主演:三船敏郎,志村乔,千秋实",9.1,日本战国时代,一小山村面临着山贼的威胁,为了保护秋天的收成,村中长老决定让去请武士来保护村子安全,但只能拿出的报酬是一天三顿的白米饭。在城里,他们遭到了武士白眼甚至被打。直到勘兵卫(志村乔 饰)的出现,他现今已沦为浪人,几经考虑最后答应了。他对农民说至少需要七名武士,于是久藏(宫口精二 饰)、胜四郎(木村功 饰)、五郎(稻叶义男 饰)、七郎(加东大介 饰)、平八(千秋实 饰)和菊千代(三船敏郎 饰)等六人也加入了队伍,七个人肩负保卫村子的任务。整个防御准备的过程中,武士与农民间发生许多摩擦也闹出不少笑话。而在一次偷袭行动中,有武士为救农民被火枪打死,很快山贼的反扑随之而来,一场恶战即将开始。 93 | 一一,"主演:吴念真,金燕玲,李凯莉",8.9,NJ(吴念真 饰)是个很有原则的生意人,同妻子敏敏(金燕玲 饰)、女儿婷婷(李凯莉 饰)、儿子洋洋(张杨洋饰)以及外婆住在台北某所普通公寓里。小舅子的一场麻烦婚礼过后,因为外婆突然中风昏迷,他迎来更加混乱的日子。敏敏公司、家里两头跑,时常感觉自己要被耗空;婷婷一直为外婆的中风内疚,恋爱谈到中途发现自己不过是替代品;NJ更是麻烦重重,公司面临破产,他又不愿放下别人眼里一文不值的自尊。一家人里,似乎只有洋洋没有烦恼,他平静地用照相机拍着各种人的背面,帮他们长出另一双眼睛,然而,洋洋简简单单的一句话,道出更深的悲凉。 94 | 完美的世界,"主演:凯文·科斯特纳,克林特·伊斯特伍德,T·J·劳瑟",8.9,单亲孩子菲利普·佩里(T·J·劳瑟 饰)的母亲对他管教甚严,8岁的小菲利普甚至从未参加过一次鬼节讨糖果的游戏。附近州监狱的两名罪犯越狱成功,劫持了菲利普作为人质,向德州边界逃窜。途中,罪犯之一的布奇(凯文·科斯特纳 饰)干掉了鲁莽愚蠢的同伙,却对小菲利普照顾有佳。与此同时,德州警探瑞德(克林特·伊斯特伍德 饰)带着手下和州长特派的犯罪专家萨利(劳拉·邓恩 饰)一同火速追捕布奇。双方在德克萨斯州境内展开了一场公路赛大竞技;而小菲利普也经历了很多从未想过过的刺激与快乐,并与布奇产生了一种近似父子的不寻常感情…… 95 | 海洋,"主演:雅克·贝汉,姜文,兰斯洛特·贝汉",9.0,"影片讲述了热爱动物又充满幻想的十岁男孩方小奇,由于父母常年在外工作,所以只能在爷爷工作的“极地海洋世界”里度过自己的童年。值得庆幸的是,“海洋世界”里千姿百态的各种海洋动物,让小奇的生活充满了欢乐和幸福。 一天晚上,远在北极的爸爸给小奇来的一封信又使他失望了,信中说我们的科考工作还没完成,因此不能回来给你过生日了。小奇非常难过,便拿着爸爸的信独自来到海豚池边偷偷哭泣。就在这个时候,奇迹发生了!那只平时就跟小奇很要好的小海豚琪琪,突然开口和他‘说话’了!它告诉小奇,它也很难过,天天思念自己的爸爸。两颗心,因为同一种情感被紧紧地联系在一起。 小奇从饲养员那里得知,琪琪是被人类从大海里救回来的。当年它爸爸为了保护它,在和鲨鱼拼搏中受了重伤,现在还不知是生还是死。琪琪的悲惨经历,让小奇决心帮助琪琪找到它的爸爸。 就在小奇和同学们努力准备的时候,琪琪却突然病了。望着不吃不喝的“好朋友”,小奇流下了眼泪。他知道,琪琪的病是因为它见不到爸爸而造成的!情急之下,小奇和维维、洋洋等好朋友把琪琪从“海洋世界”偷运出去,可就在他们的行动将要成功的时候,却被饲养员发现了。小奇不仅被平日里非常疼爱他的爷爷怒斥,还被禁止再来海豚池看琪琪!小奇又气又急,终于也发起了高烧。 小奇怎么也不知道,他和琪琪之间的友谊,他为“海洋朋友”所做的一切努力,同样也打动了一些人的心,他们正在为琪琪重归大海,重见爸爸而暗暗努力着。一段关于人与动物、亲情与友谊、爱与理解的美丽故事,正在那个如梦如幻的海洋世界里上演着……" 96 | 爱·回家,"主演:俞承豪,金艺芬,童孝熙",9.0,为了方便找工作,妈领着7岁的相宇(俞承浩 饰)去乡下的外婆家,想把他暂时留在那里。外婆(金亦芬 饰)年事已高,不能说话也不识字。而一直生活在城市里的孙子相宇,刚开始无法适应连游戏机、电池都没得卖的乡下生活。他开始蛮横地流露出不满,抱怨这个抱怨那。为了买电池,偷走外婆的银头簪拿去卖;外婆得知孙子想吃炸鸡,却只理解到鸡肉,炖了只鸡给孙子吃,却被生气的相宇踢翻了。老人家默默包容着孙子的一切,渐渐的,相宇也体会到外婆的良苦用心,适应并喜欢上了乡下生活。 97 | 黄金三镖客,"主演:克林特·伊斯特伍德,李·范·克里夫,埃里·瓦拉赫",8.9,故事发生在美国南北战争时期。图科(埃里·瓦拉赫 饰)是一个图财害命的江洋大盗,因此他被镇上悬赏通缉。布兰迪(克林特·伊斯特伍德 饰)是一个除暴安良的牛仔,他无意中抓住了图科,但嫌赏金不够又掳走了他。在荒漠中,布兰迪惩罚图科让其自生自灭。但是诡诈的图科居然逃过了一劫,并纠集一些帮凶在客栈捉住了布兰迪。正当图科以牙还牙折磨布兰迪的时候,他劫持了一个名叫卡森的士兵。后者临死前留下了宝藏的秘密,图科和布兰迪分别获得了一半信息。与此同时,一个狡猾的杀手桑坦萨(李·范·克里夫 饰)也通过其他渠道发现了宝藏的秘密。于是,在寻宝的道路上,三个人使出浑身解数,上演了一场场对决的好戏…… 98 | 我爱你,"主演:宋在浩,李顺才,尹秀晶",9.0,飘雪的坡道上,送牛奶的老头子金万皙(李顺载 饰)邂逅了收废品的老太太宋怡芬(尹秀晶 饰)。他们的前半生各自背负着艰辛的人生:万皙年轻时我行我素,直到妻子病逝才深觉愧疚;怡芬被心爱的男人抛弃在城市角落,孩子夭折后至老未嫁。两位老人在每天凌晨寂静的街道上相遇,孤独而苦难的生活令他们渐渐靠近。在万皙孙女妍儿(宋智孝 饰)的穿针引线下,如初恋般的悸动萌发在了彼此心中。万皙的朋友、停车场管理员张军峰(宋在河 饰)一直耐心的看护着患有老年痴呆症的老伴。直到有一天,军峰得知老伴已患绝症。目睹她一次次痛苦病发,心如刀绞的军峰做出了悲伤的决定…… 99 | 迁徙的鸟,"主演:雅克·贝汉,Philippe Labro",9.1,当鸟儿用羽翼去实现梦想,翱翔在我们永远无法凭借自身企及的天空,人类又该赋予他们怎样的赞叹呢?“鸟的迁徙是一个关于承诺的故事,一种对于回归的承诺。”雅克·贝汉以这样一句话带我们踏上了鸟与梦飞行之旅。 100 | 英雄本色,"主演:狄龙,张国荣,周润发",9.2,宋子豪(狄龙 饰)与Mark(周润发 饰)是一个国际伪钞集团之重要人物,也是情如手足的挚友。宋子豪之弟宋子杰(张国荣 饰)刚刚考入警官学校,其女友钟柔(朱宝意 饰)聪明敏慧,对子杰情深一片。一次,宋子豪带手下谭成(李子雄 饰)去台北与当地黑帮作伪钞交易。不料谭成早已勾结台北黑帮,出卖子豪。在一场枪战中宋子豪受伤,被闻讯而来的警察捕获入狱。Mark得知宋子豪被捕,孤身一人赴台北击毙黑帮头目,自己也身负重伤,艰难地逃离现场。与此同时,台湾黑帮唯恐子豪在狱中向警方泄密,派人至香港绑架子豪之父,混战中老父丧命。宋子豪的弟弟子杰得知兄长原为伪钞集团头目,老父为之而死,遂对子豪及黑社会恨之入骨,决心除暴安良。三年后,宋子豪出狱回到香港,决心弃暗投明,但得不到宋子杰的谅解。当年出卖宋子豪的谭成现已成为老大。他假惺惺地要求宋子豪合作,遭到拒绝,便设计加害宋子杰。宋子豪忍无可忍,联合Mark盗取谭成制造伪钞的电脑软盘,随即交给宋子杰。但同时佯称以软盘与谭成做交易,计划在交易时活捉谭成。岂料谭成早有准备,双方在码头展开枪战。这时,宋子杰也驾车赶来,激战中Mark不幸身亡。警察蜂拥而至,包围了码头。为了不连累宋子杰,宋子豪开枪击毙谭成后,从宋子杰身上取下手铐自缚,向警察自首。两兄弟终于言归于好。 101 | -------------------------------------------------------------------------------- /EXCEL表格/第六章/jjtt.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/EXCEL表格/第六章/jjtt.csv -------------------------------------------------------------------------------- /EXCEL表格/第十一章/thread.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/EXCEL表格/第十一章/thread.xlsx -------------------------------------------------------------------------------- /EXCEL表格/第十二章/SMTP.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/EXCEL表格/第十二章/SMTP.xlsx -------------------------------------------------------------------------------- /EXCEL表格/第十五章/界面布局.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/EXCEL表格/第十五章/界面布局.xlsx -------------------------------------------------------------------------------- /EXCEL表格/第十四章/Python通配符.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/EXCEL表格/第十四章/Python通配符.xlsx -------------------------------------------------------------------------------- /EXCEL表格/第十四章/类型转换.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/EXCEL表格/第十四章/类型转换.xlsx -------------------------------------------------------------------------------- /EXCEL表格/附录/GIT分布式版本管理系统——git常用命令列表.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/EXCEL表格/附录/GIT分布式版本管理系统——git常用命令列表.xlsx -------------------------------------------------------------------------------- /EXCEL表格/附录/怎样阅读源码——素材.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/EXCEL表格/附录/怎样阅读源码——素材.xlsx -------------------------------------------------------------------------------- /Others/内容简介.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/Others/内容简介.docx -------------------------------------------------------------------------------- /Others/前言.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/Others/前言.docx -------------------------------------------------------------------------------- /Others/目录.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/Others/目录.docx -------------------------------------------------------------------------------- /Selenium自动化测试(公版)-compressed.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/Selenium自动化测试(公版)-compressed.pdf -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | **本书读者对象** 2 | 3 | - 测试自动化 4 | - Web开发者 5 | - Python开发工程师 6 | - 人工智能工程师 7 | - 爬虫开发工程师 8 | - 数据分析工程师 9 | - 系统运维工程师 10 | 11 | 12 | 本书内容及体系结构 13 | ------------- 14 | 15 | 第1章 从Selenium开始 16 | 17 | 本章从起初入手,帮助读者了解Selenium项目的框架和由来,以及如何选择自己的WebDriver。接着介绍了在Windows和Linux两种操作系统下的Selenium安装方式。 18 | 19 | 第2章 页面导航 20 | 21 | 本章对Selenium项目和浏览器交互的基本操作内容进行了介绍和串讲。本章介绍了如何通过Selenium项目实现启动浏览器,打开浏览器,浏览器窗口切换等一系列的常用的浏览器操作的自动化。 22 | 23 | 第3章 元素定位 24 | 25 | 在第三章中笔者将会引领读者领略了Selenium的八种元素定位方式。通过对本章与前两章的内容的学习,读者可以初步掌握并实现一个略有雏形的自动化程序的能力。 26 | 27 | 第4章 利器----PhantomJS 28 | 29 | PhantomJS是一个独立的项目,可以实现绝大部分浏览器的功能。不同于其他的浏览器,PhantomJS只会在内存中运行,而不会显示任何界面。十分适合我们进行数据采集的时候使用。本章介绍了PhantomJS和 Selenium搭配使用的方法。 30 | 31 | 第5章 实战part1——Python官网 32 | 33 | 本章是对前面所学的内容的一个综合整理运用。通过实战,帮助读者巩固已经学习过的知识,并且在实际操作中,锻炼读者的编程能力与思维。 34 | 35 | 第6章 实战part2——今日头条 36 | 37 | 以今日头条为例子,引入即将要学习的内容,本章主要讨论技术部分实现以及解决思路分析。目的在于帮助读者形成一个目录式的系统印象。 38 | 39 | 第7章 数据编解码、处理 40 | 41 | 在互联网中,难免要面对错综复杂的各种数据类型,这一章主要介绍以下内容:CSV、JSON、XML、BASE64、NLTK、HASH、Bloom Filter以及关系型数据库和非关系型数据库。 42 | 43 | 第8章 实战part3——猫眼电影 44 | 45 | 以猫眼电影为例子,详细讲解从了解客户需求到网站分析、处理的全套流程,并在分析中逐步引入代码的说明与实现。 46 | 47 | 第9章 实战part4——淘宝商品 48 | 49 | 在这一小节中,笔者以淘宝商品为例子,阐述如何应对复杂网站的页面数据采集,帮助诸位追赶较为新颖的实现方式,解决读者因难以下手而犹豫不决,无法直接应用的难题。 50 | 51 | 第10章 单元测试 52 | 53 | 解决单元测试是什么、为什么要写单元测试、应该怎么写单元测试这三个难题。帮助读者评估在自己的项目中是否要使用单元测试。 54 | 55 | 第11章 多线程 56 | 57 | 实现同步完成多项任务的功能,帮助读者提高程序的运行效率,解决时间。讨论线程、进程、线程切换、锁以及GIL等概念。 58 | 59 | 第12章 发送邮件 60 | 61 | 本章讨论程序反馈最低廉且合理的方式,通过实现自动化发送邮件,实现服务器(程序)无人值守情况下的报备以及记录 62 | 63 | 第13章 Selenium IDE 64 | 65 | 介绍了两个简单且方便的录制自动化脚本的工具,为读者提供一条功能化的测试道路,快捷生成自动化脚本。 66 | 67 | 第14章 Python拓展 68 | 69 | 这一章节讨论包括但不限于:Python2代码转换Python3代码,测试类型,通配符,字符串方法,异常层次结构,类,推导式等等扩展性内容。 70 | 71 | 第15章 GUI,图形化测试 72 | 73 | 讨论制作图形化界面的方法并且介绍经常使用的组件,帮助读者实现测试工具图形化以及了解底层实现的思路。 74 | 75 | 第16章 实战案例part5 知乎 76 | 77 | 着重讨论Selenium项目和传统方式的爬虫的结合,实现一种全新的,功能更加强大的数据采集爬虫。 78 | 79 | 第17章 实战案例part6 微博 80 | 81 | 对全书的内容的整合提升,帮助读者巩固已经学过的知识,构筑全面的知识框架,了解自己的不足与缺陷。 82 | 83 | ### 关于本书的勘误: 84 | 85 | 限于我能力不足,加之个人精力有限,本书难免有错误之处. 86 | 87 | **勘误发布:** 88 | http://note.youdao.com/noteshare?id=a7f0705acb54486b627de091ab277314&sub=94EB566C5FB441159FA82618AD3A9090 89 | 90 | ### 本书的获取: 91 | 92 | 链接:https://www.lanzous.com/b588019/ 93 | 密码:9968 94 | -------------------------------------------------------------------------------- /代码/第七章/HASH_TEST.PY: -------------------------------------------------------------------------------- 1 | #导入哈希算法库 2 | import hashlib 3 | 4 | #MD5加密 5 | md5_1 = hashlib.md5() 6 | md5_1.update(b'using md5 in python') 7 | print(md5_1.hexdigest()) 8 | 9 | #如果数据量很大,可以分块多次调用update(),最后计算的结果是一样的 10 | md5_2 = hashlib.md5() 11 | md5_2.update(b'using md5') 12 | md5_2.update(b' in python') 13 | print(md5_2.hexdigest()) 14 | 15 | #SHA1加密 16 | sha1 = hashlib.sha1() 17 | sha1.update(b'using sha1 in python') 18 | print(sha1.hexdigest()) 19 | -------------------------------------------------------------------------------- /代码/第七章/NLTK2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # @Author: name 3 | # @Date: 2018-07-31 21:14:15 4 | # @Last Modified by: name 5 | # @Last Modified time: 2018-07-31 21:57:09 6 | 7 | from bs4 import BeautifulSoup 8 | import urllib.request 9 | 10 | import sys 11 | import io 12 | ''' 13 | 基础:万丈高楼平地起 —— Redis 基础数据结构 14 | 千里之行,始于足下。本节我们的学习目标是:快速理解并掌握 Redis 的基础知识。 15 | 16 | 由于本节内容是 Redis 最简单最容易掌握的知识,如果读者已经很熟悉 Redis 的基础数据结构,从珍惜生命的角度出发,你可以略过本节内容,跳到下一节继续阅读。如果你觉得本节的动画有点晃眼,阅读起来不那么舒服,可以看看作者的另一篇文章《Redis 数据结构基础教程》。 17 | 18 | 要体验 Redis,我们先从 Redis 安装说起。 19 | 20 | Redis 安装 21 | 体验 Redis 需要使用 Linux 或者 Mac 环境,如果是 Windows 可以考虑使用虚拟机。主要方式有四种: 22 | 23 | 使用 Docker 安装。 24 | 通过 Github 源码编译。 25 | 直接安装 apt-get install(Ubuntu)、yum install(RedHat) 或者 brew install(Mac)。 26 | 如果读者懒于安装操作,也可以使用网页版的 Web Redis 直接体验。... 27 | 28 | 29 | ''' 30 | #python print()在控制台会默认转换为gbk输出,但是部分utf-8编码没有对应的gbk, 31 | #所以会报错,我们设置默认输出编码为utf8就没有问题了。 32 | sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') 33 | response = urllib.request.urlopen('') 34 | html = response.read() 35 | soup = BeautifulSoup(html,"html5lib") 36 | text = soup.get_text(strip=True) 37 | tokens = text.split() 38 | print(tokens) -------------------------------------------------------------------------------- /代码/第七章/NLTK词性分析.py: -------------------------------------------------------------------------------- 1 | #简单来说,自然语言处理(NLP)就是开发能够理解人类语言的应用程序或服务。 2 | 3 | #这里讨论一些自然语言处理(NLP)的实际应用例子,如语音识别、语音翻译、理解完整的句子、理解匹配词的同义词,以及生成语法正确完整句子和段落。 4 | 5 | #这并不是NLP能做的所有事情。 6 | #NLTK 在用 Python 处理自然语言的工具中处于领先的地位。它提供了 WordNet 这种方便处理词汇资源的借口,还有分类、分词、除茎、标注、语法分析、语义推理等类库。 7 | # 8 | #深入学习 9 | import nltk 10 | 11 | nltk.download() -------------------------------------------------------------------------------- /代码/第七章/base64_test.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # @Author: name 3 | # @Date: 2018-07-31 20:56:26 4 | # @Last Modified by: name 5 | # @Last Modified time: 2018-07-31 21:04:17 6 | import base64 7 | string=b"admin" 8 | encoded=base64.b64encode(string) 9 | decoded=base64.b64decode(encoded) 10 | print(encoded) 11 | print(decoded) -------------------------------------------------------------------------------- /代码/第七章/bloom_filter.py: -------------------------------------------------------------------------------- 1 | import os 2 | from pybloom_live import BloomFilter 3 | 4 | #你完全可以避免下载庞大的vc运行库,在https://www.lfd.uci.edu/~gohlke/pythonlibs/下载whl文件 5 | ''' 6 | animals = ['dog', 'cat', 'giraffe', 'fly', 'mosquito', 'horse', 'eagle', 7 | 'bird', 'bison', 'boar', 'butterfly', 'ant', 'anaconda', 'bear', 8 | 'chicken', 'dolphin', 'donkey', 'crow', 'crocodile','testadd'] 9 | ''' 10 | is_exist = os.path.exists('test.blm') 11 | #判断是否存在bloom文件 12 | #判断存在就读取 13 | if is_exist: 14 | bf = BloomFilter.fromfile(open('test.blm', 'rb')) 15 | #没有该文件则创建bf对象 最后的时候保存文件 16 | else: 17 | bf = BloomFilter(20000, 0.001) 18 | 19 | 20 | for i in range(10): 21 | if i in bf: 22 | print('pass') 23 | pass 24 | else: 25 | print('add %s' %i) 26 | bf.add(i) 27 | n=open('test.blm','wb') 28 | bf.tofile(n) 29 | n.close() 30 | for i in range(20): 31 | if i in bf: 32 | print("written") 33 | else: 34 | print("unwritten") 35 | -------------------------------------------------------------------------------- /代码/第七章/csv.py: -------------------------------------------------------------------------------- 1 | import csv 2 | 3 | Headers=['name','gender','phone_number','note'] 4 | file_1=['张三','男','1234567890','无'] 5 | file_2=['李四','男','1234567890','无'] 6 | file_3=['王五','男','1234567890','有'] 7 | file_4=['郭六','女','1234567890','无'] 8 | 9 | with open('test.csv','a') as f: 10 | writer=csv.writer(f) 11 | writer.writerow(Headers) 12 | writer.writerow(file_1) 13 | writer.writerow(file_2) 14 | writer.writerow(file_3) 15 | writer.writerow(file_4) 16 | 17 | -------------------------------------------------------------------------------- /代码/第七章/csv_read.py: -------------------------------------------------------------------------------- 1 | import csv 2 | file=open('city.csv','r', encoding='utf-8',errors='ignore') 3 | csv_file = csv.reader(file) 4 | for i in csv_file: 5 | print(i) 6 | 7 | -------------------------------------------------------------------------------- /代码/第七章/csv_wtire.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: utf-8 -*- 3 | ''' 4 | import csv 5 | import sys 6 | import io 7 | sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8') 8 | 9 | csv_file=open('city.csv','r',encoding="utf8") 10 | reader=csv.reader(csv_file) 11 | for item in reader: 12 | print(item) 13 | ''' 14 | import csv 15 | 16 | # 文件头,一般就是数据名 17 | header=["name","gender","score"] 18 | file_1=["zhang_san","male","100"] 19 | file_2=["Li_si","male","80"] 20 | 21 | # 创建 22 | # 如果不加,newline=''会多一行空行 23 | csvFile = open("writer.csv","w",newline='') 24 | writer = csv.writer(csvFile) 25 | 26 | # 写入的内容都是以列表的形式传入函数 27 | writer.writerow(header) 28 | writer.writerow(file_1) 29 | writer.writerow(file_2) 30 | 31 | #关闭 32 | csvFile.close() -------------------------------------------------------------------------------- /代码/第七章/json_test.py: -------------------------------------------------------------------------------- 1 | import json 2 | #json库提供四个方法,json.dump(),json.dumps(),json.load(),json.load() 3 | #dumps是将dict转化成str格式,loads是将str转化成dict格式。 4 | #文件输出也略有差异 5 | # 6 | json_data={ 7 | "results": [ 8 | { 9 | "location": { 10 | "id": "WX4FBXXFKE4F", 11 | "name": "北京", 12 | "country": "CN", 13 | "path": "北京,北京", 14 | "timezone": "Asia/Shanghai", 15 | "timezone_offset": "+08:00" 16 | } 17 | 18 | } 19 | ] 20 | } 21 | 22 | b=json.dumps(json_data) 23 | print(b,type(b)) 24 | c=json.loads(b) 25 | print(c,type(c)) 26 | -------------------------------------------------------------------------------- /代码/第七章/json_test2.py: -------------------------------------------------------------------------------- 1 | import json 2 | #json库提供四个方法,json.dump(),json.dumps(),json.load(),json.load() 3 | #dumps是将dict转化成str格式,loads是将str转化成dict格式。 4 | #文件输出也略有差异 5 | # 6 | json_data={ 7 | "results": [ 8 | { 9 | "location": { 10 | "id": "WX4FBXXFKE4F", 11 | "name": "北京", 12 | "country": "CN", 13 | "path": "北京,北京", 14 | "timezone": "Asia/Shanghai", 15 | "timezone_offset": "+08:00" 16 | } 17 | 18 | } 19 | ] 20 | } 21 | f = open('test.txt', 'w') 22 | print(type(json_data)) 23 | json.dump(json_data, f) 24 | #必须先关闭,然后才会写入 25 | f.close() 26 | 27 | #注,不能同时使用 28 | #f.read()和json.load(f) 29 | #read()调用后,load()方法就会什么都获取不到 30 | #笔者就在这里纠结了好久 31 | #报错json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 32 | #其实根本没有获取到文件 33 | f=open('test.txt', 'r') 34 | print(f.read()) 35 | f.close() 36 | 37 | #读取test.txt内容 38 | f=open('test.txt', 'r') 39 | #load方法 40 | print(json.load(f)) 41 | f.close() 42 | 43 | -------------------------------------------------------------------------------- /代码/第七章/mysql_test.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # @Author: name 3 | # @Date: 2018-08-01 12:19:48 4 | # @Last Modified by: name 5 | # @Last Modified time: 2018-08-01 12:20:06 6 | 7 | ''' 8 | url:https://dev.mysql.com/downloads/mysql/ 9 | ''' -------------------------------------------------------------------------------- /代码/第七章/nltk3.py: -------------------------------------------------------------------------------- 1 | import nltk 2 | sentence = """At eight o'clock on Thursday morning Arthur didn't feel very good.""" 3 | tokens = nltk.word_tokenize(sentence) 4 | 5 | #报错 6 | ''' 7 | 需要什么下载什么 8 | ********************************************************************** 9 | Resource gutenberg not found. 10 | Please use the NLTK Downloader to obtain the resource: 11 | 12 | >>> import nltk 13 | >>> nltk.download('gutenberg') 14 |  15 | Searched in: 16 | - 'C:\\Users\\xuyichenmo/nltk_data' 17 | - 'C:\\nltk_data' 18 | - 'D:\\nltk_data' 19 | - 'E:\\nltk_data' 20 | - 'F:\\Python\\nltk_data' 21 | - 'F:\\Python\\share\\nltk_data' 22 | - 'F:\\Python\\lib\\nltk_data' 23 | - 'C:\\Users\\xuyichenmo\\AppData\\Roaming\\nltk_data' 24 | ********************************************************************** 25 | 26 | 27 | 28 | >>> from nltk.book import * 29 | 30 | *** Introductory Examples for the NLTK Book *** 31 | Loading text1, ..., text9 and sent1, ..., sent9 32 | Type the name of the text or sentence to view it. 33 | Type: 'texts()' or 'sents()' to list the materials. 34 | text1: Moby Dick by Herman Melville 1851 35 | text2: Sense and Sensibility by Jane Austen 1811 36 | text3: The Book of Genesis 37 | text4: Inaugural Address Corpus 38 | text5: Chat Corpus 39 | text6: Monty Python and the Holy Grail 40 | text7: Wall Street Journal 41 | text8: Personals Corpus 42 | text9: The Man Who Was Thursday by G . K . Chesterton 1908 43 | 44 | 45 | 46 | text1为NLTK数据包中的一段数据源,是一大串字符串。(原文在数据包下载目录下的gutenberg.zip中的melville-moby_dick.txt) 47 | text1.concordance('monstrous')这句话实现的是从这一大串字符串中找寻出包含monstrous这个单词的语句 48 | ''' 49 | print(tokens) -------------------------------------------------------------------------------- /代码/第七章/py-mysql.py: -------------------------------------------------------------------------------- 1 | #导入库 2 | import pymysql 3 | 4 | #创建数据库 5 | conn=pymysql.connect(host='localhost',port=3306,db='test',user='root',passwd='password',charset='utf8') 6 | cur=conn.cursor() 7 | 8 | #查询原数据------------------------------------------------ 9 | select="SELECT * FROM user_info" 10 | cur.execute(select) 11 | all_data=cur.fetchall() 12 | print(all_data) 13 | print("*****====================================*****") 14 | 15 | #插入数据 16 | insert="INSERT INTO user_info VALUES('li_liu',2,123456789);" 17 | count=cur.execute(insert) 18 | 19 | #输出插入后 20 | select="SELECT * FROM user_info;" 21 | cur.execute(select) 22 | all_data=cur.fetchall() 23 | print(all_data) 24 | print("*****====================================*****") 25 | 26 | #删除数据 27 | delete='DELETE FROM user_info WHERE log_in="wang_wu";' 28 | count=cur.execute(delete) 29 | 30 | #输出删除后 31 | select="SELECT * FROM user_info;" 32 | cur.execute(select) 33 | all_data=cur.fetchall() 34 | print(all_data) 35 | print("*****====================================*****") 36 | 37 | #更改 38 | update='UPDATE user_info SET log_in="im changed" WHERE id=0;' 39 | count=cur.execute(update) 40 | 41 | #输出更改后 42 | select="SELECT * FROM user_info;" 43 | cur.execute(select) 44 | all_data=cur.fetchall() 45 | print(all_data) 46 | print("*****====================================*****") 47 | 48 | 49 | conn.commit() 50 | #关闭 51 | cur.close() 52 | # 关闭数据库连接 53 | conn.close() 54 | -------------------------------------------------------------------------------- /代码/第七章/pymysql2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | #encoding=utf-8 3 | import pymysql 4 | 5 | conn=pymysql.connect(host='localhost',port=3306,db='test',user='root',passwd='password',charset='utf8') 6 | cur=conn.cursor() 7 | 8 | #查询原数据------------------------------------------------ 9 | 10 | select="SELECT * FROM user_info" 11 | cur.execute(select) 12 | all_data=cur.fetchall() 13 | print(all_data) 14 | print("*****====================================*****") 15 | 16 | #插入数据 17 | insert="INSERT INTO user_info VALUES('li_liu',2,123456789);" 18 | count=cur.execute(insert) 19 | conn.commit() 20 | 21 | #输出插入后 22 | select="SELECT * FROM user_info;" 23 | cur.execute(select) 24 | all_data=cur.fetchall() 25 | print(all_data) 26 | print("*****====================================*****") 27 | 28 | #删除数据 29 | delete='DELETE FROM user_info WHERE log_in="wang_wu";' 30 | count=cur.execute(delete) 31 | conn.commit() 32 | 33 | #输出删除后 34 | select="SELECT * FROM user_info;" 35 | cur.execute(select) 36 | all_data=cur.fetchall() 37 | print(all_data) 38 | print("*****====================================*****") 39 | 40 | #更改 41 | update='UPDATE user_info SET log_in="im changed" WHERE id=0;' 42 | count=cur.execute(update) 43 | conn.commit() 44 | 45 | #输出更改后 46 | select="SELECT * FROM user_info;" 47 | cur.execute(select) 48 | all_data=cur.fetchall() 49 | print(all_data) 50 | print("*****====================================*****") 51 | 52 | 53 | #关闭 54 | cur.close() 55 | # 关闭数据库连接 56 | conn.close() 57 | -------------------------------------------------------------------------------- /代码/第七章/test.blm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/代码/第七章/test.blm -------------------------------------------------------------------------------- /代码/第七章/test.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # @Author: name 3 | # @Date: 2018-08-01 10:27:51 4 | # @Last Modified by: name 5 | # @Last Modified time: 2018-08-01 10:30:22 6 | from nltk.corpus import wordnet 7 | 8 | syn = wordnet.synsets("pain") 9 | #输出定义 10 | print(syn[0].definition(),"\n") 11 | #输出样例 12 | print(syn[0].examples()) 13 | -------------------------------------------------------------------------------- /代码/第七章/xml_test.py: -------------------------------------------------------------------------------- 1 | from xml.etree.ElementTree import tostring 2 | from xml.etree.ElementTree import Element 3 | 4 | dict = { "name":"zhang_san", "gender":"female", "phone_number":"01234567890","note":"none"} 5 | def convert(tag_name,dict): 6 | #建立一个XML 7 | elem = Element(tag_name) 8 | 9 | #双值循环取出字典中的key和value 10 | for key,value in dict.items(): 11 | 12 | #打印 13 | print(key,":",value) 14 | 15 | #相当于为key建一个标签 16 | xml_elem=Element(key) 17 | #将key的值赋给这个标签的值 18 | xml_elem.text=str(value) 19 | 20 | #添加进XML文件 21 | elem.append(xml_elem) 22 | 23 | return elem 24 | 25 | #字典转换 26 | dict_convert = convert("test", dict) 27 | print("-------------------------------------------") 28 | print(dict_convert) 29 | 30 | #这是转换为标准的XML 31 | print(tostring(dict_convert)) 32 | #设置最外层标签属性 33 | dict_convert.set('id_number','01234567890') 34 | #再次输出 35 | print(tostring(dict_convert)) 36 | 37 | ''' 38 | text=tostring(e) 39 | print(text) 40 | ''' -------------------------------------------------------------------------------- /代码/第七章/xml_test2.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # @Author: name 3 | # @Date: 2018-07-31 19:27:36 4 | # @Last Modified by: name 5 | # @Last Modified time: 2018-07-31 19:38:03 6 | #上一个测试的数据 7 | import xml.etree.cElementTree as ElementTree 8 | 9 | class XmlListConfig(list): 10 | def __init__(self, aList): 11 | for element in aList: 12 | if element: 13 | # treat like dict 14 | if len(element) == 1 or element[0].tag != element[1].tag: 15 | self.append(XmlDictConfig(element)) 16 | # treat like list 17 | elif element[0].tag == element[1].tag: 18 | self.append(XmlListConfig(element)) 19 | elif element.text: 20 | text = element.text.strip() 21 | if text: 22 | self.append(text) 23 | 24 | 25 | class XmlDictConfig(dict): 26 | ''' 27 | Example usage: 28 | 29 | >>> tree = ElementTree.parse('your_file.xml') 30 | >>> root = tree.getroot() 31 | >>> xmldict = XmlDictConfig(root) 32 | 33 | Or, if you want to use an XML string: 34 | 35 | >>> root = ElementTree.XML(xml_string) 36 | >>> xmldict = XmlDictConfig(root) 37 | 38 | And then use xmldict for what it is... a dict. 39 | ''' 40 | def __init__(self, parent_element): 41 | if parent_element.items(): 42 | self.update(dict(parent_element.items())) 43 | for element in parent_element: 44 | if element: 45 | # treat like dict - we assume that if the first two tags 46 | # in a series are different, then they are all different. 47 | if len(element) == 1 or element[0].tag != element[1].tag: 48 | aDict = XmlDictConfig(element) 49 | # treat like list - we assume that if the first two tags 50 | # in a series are the same, then the rest are the same. 51 | else: 52 | # here, we put the list in dictionary; the key is the 53 | # tag name the list elements all share in common, and 54 | # the value is the list itself 55 | aDict = {element[0].tag: XmlListConfig(element)} 56 | # if the tag has attributes, add those to the dict 57 | if element.items(): 58 | aDict.update(dict(element.items())) 59 | self.update({element.tag: aDict}) 60 | # this assumes that if you've got an attribute in a tag, 61 | # you won't be having any text. This may or may not be a 62 | # good idea -- time will tell. It works for the way we are 63 | # currently doing XML configuration files... 64 | elif element.items(): 65 | self.update({element.tag: dict(element.items())}) 66 | # finally, if there are no child tags and no attributes, extract 67 | # the text 68 | else: 69 | self.update({element.tag: element.text}) 70 | xml="zhang_sanfemale01234567890none" 71 | 72 | root = ElementTree.XML(xml) 73 | xmldict = XmlDictConfig(root) 74 | print(xmldict) 75 | -------------------------------------------------------------------------------- /代码/第七章/xml_test3.py: -------------------------------------------------------------------------------- 1 | from xml.etree import ElementTree as et 2 | 3 | xml_string=b'zhang_sanfemale01234567890none' 4 | 5 | root=et.fromstring(xml_string) 6 | 7 | 8 | print("*****====================================*****") 9 | #列表形式输出的内存地址 10 | for i in list(root): 11 | print(i.tag,i.text) 12 | 13 | print("*****====================================*****") 14 | test_person=root.getiterator("test") 15 | #用来输出内容 16 | for i in test_person: 17 | for j in i: 18 | print(j.tag,j.text) 19 | 20 | print("*****====================================*****") 21 | #返回的是一个列表 22 | find_node2=root.findall("name") 23 | print(find_node2[0],find_node2[0].tag,find_node2[0].text) 24 | 25 | print("*****====================================*****") 26 | #查找获得的第一个 27 | find_node=root.find("name") 28 | print(find_node,find_node.tag,find_node.text) 29 | 30 | 31 | 32 | 33 | ''' 34 | IDLE: 35 | >>> from xml.etree import ElementTree as et 36 | >>> xml_string=b'zhang_sanmale01234567890none' 37 | >>> root=et.fromstring(xml_string) 38 | >>> root.tag 39 | 'test' 40 | >>> root.attrib 41 | {} 42 | >>> for i in root: 43 | print(i.tag,i.attrib) 44 | 45 | name {} 46 | gender {'note': 'transsexuals'} 47 | phone_number {} 48 | note {} 49 | 50 | #元素,返回值 51 | >>> for i in root: 52 | print(i) 53 | 54 | 55 | 56 | 57 | 58 | >>> for i in root: 59 | print(i.text) 60 | 61 | zhang_san 62 | male 63 | 01234567890 64 | none 65 | ''' -------------------------------------------------------------------------------- /代码/第三章/3,5.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/代码/第三章/3,5.py -------------------------------------------------------------------------------- /代码/第三章/3.1.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # @Author: name 3 | # @Date: 2018-07-28 22:03:13 4 | # @Last Modified by: name 5 | # @Last Modified time: 2018-07-28 23:06:17 6 | #引入webdriver和time 7 | from selenium import webdriver 8 | import time 9 | 10 | #打开浏览器和打开百度 11 | driver=webdriver.Chrome() 12 | driver.get("https://www.baidu.com/") 13 | 14 | #通过id查找,然后输入,并点击 15 | driver.find_element_by_name("wd").send_keys("selenium") 16 | driver.find_element_by_id("su").click() 17 | -------------------------------------------------------------------------------- /代码/第三章/3.2.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/代码/第三章/3.2.py -------------------------------------------------------------------------------- /代码/第三章/3.3.1.py: -------------------------------------------------------------------------------- 1 | 2 | from selenium import webdriver 3 | 4 | driver = webdriver.Chrome() 5 | driver.get("https://www.baidu.com") 6 | 7 | try: 8 | driver.find_element_by_tag_name("input") 9 | print ('test pass: successfully found by tag name') 10 | except Exception as e: 11 | print ("Exception found", format(e)) 12 | 13 | driver.quit() -------------------------------------------------------------------------------- /代码/第三章/3.3.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/代码/第三章/3.3.py -------------------------------------------------------------------------------- /代码/第三章/3.4.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/代码/第三章/3.4.py -------------------------------------------------------------------------------- /代码/第三章/3.6.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/代码/第三章/3.6.py -------------------------------------------------------------------------------- /代码/第三章/3.7.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/代码/第三章/3.7.py -------------------------------------------------------------------------------- /代码/第三章/3.8.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # @Author: name 3 | # @Date: 2018-07-29 12:41:17 4 | # @Last Modified by: name 5 | # @Last Modified time: 2018-07-29 12:41:43 6 | 7 | #常规的导入库 8 | from selenium import webdriver 9 | import time 10 | 11 | #打开浏览器和打开百度 12 | driver=webdriver.Chrome() 13 | driver.get("https://www.baidu.com/") 14 | 15 | #打开新闻 16 | time.sleep(2) 17 | driver.find_element_by_partial_link_text("新闻").click() 18 | driver.back() 19 | 20 | #打开地图 21 | time.sleep(2) 22 | driver.find_element_by_partial_link_text("地图").click() 23 | driver.back() 24 | 25 | #打开视频 26 | time.sleep(2) 27 | driver.find_element_by_partial_link_text("视频").click() 28 | driver.back() 29 | #退出 30 | time.sleep(2) 31 | driver.quit() -------------------------------------------------------------------------------- /代码/第九章/tb.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | from selenium import webdriver 4 | from selenium.webdriver.support.wait import WebDriverWait 5 | from selenium.webdriver.support import expected_conditions as EC 6 | from selenium.webdriver.common.by import By 7 | import time 8 | 9 | url="https://detail.tmall.com/item.htm?spm=a230r.1.14.3.113f5268zyhZo2&id=552925823079&cm_id=140105335569ed55e27b&abbucket=6&sku_properties=10004:97505;5919063:6536025" 10 | 11 | dr=webdriver.Chrome() 12 | dr.get(url) 13 | 14 | time.sleep(0.5) 15 | xpath1='//*[@id="J_TabBar"]/li[3]/a' 16 | dr.find_element_by_xpath(xpath1).click() 17 | 18 | time.sleep(1)xpath2='//*[@id="J_Reviews"]/div/div[1]/div[3]/div[2]/div' 19 | comment_all=dr.find_element_by_xpath(xpath2) 20 | print(comment_all.text) 21 | for i in range(1,101): 22 | url='https://rate.tmall.com/list_detail_rate.htm?itemId=552925823079&spuId=697786254&sellerId=2616970884&order=3¤tPage=%d&append=0&content=1' %i 23 | dr.get(url) 24 | content=dr.find_element_by_xpath("/html/body").text 25 | print(text) 26 | -------------------------------------------------------------------------------- /代码/第九章/tb_change.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | from selenium.common.exceptions import TimeoutException 3 | from selenium.webdriver.common.by import By 4 | from selenium.webdriver.support import expected_conditions as EC 5 | from selenium.webdriver.support.wait import WebDriverWait 6 | from urllib.parse import quote 7 | from pyquery import PyQuery as PQ 8 | 9 | #提取商品数据 10 | def get_products(): 11 | #获取页面源代码 12 | html=dr.page_source 13 | pq_file=PQ(html) 14 | all=pq_file('#mainsrp-itemlist .items .item').items() 15 | for i in all: 16 | product = [i.find('.pic .img').attr('data-src'), 17 | i.find('.price').text(), 18 | i.find('.deal-cnt').text(), 19 | i.find('.title').text(), 20 | i.find('.shop').text(), 21 | i.find('.location').text()] 22 | print(product) 23 | 24 | #打开浏览器 25 | dr=webdriver.Chrome() 26 | wait=WebDriverWait(dr,10) 27 | keyword='iPad' 28 | 29 | def scratch_page(page): 30 | #输出页面 31 | print('正在爬取第',page,'页') 32 | #防止某个页面失败导致爬虫停止 33 | try: 34 | #跳转关键词链接 35 | url='https://s.taobao.com/search?q='+quote(keyword) 36 | dr.get(url) 37 | 38 | if page > 1: 39 | #检测输入框 40 | input=wait.until( 41 | EC.presence_of_element_located((By.XPATH, '//*[@id="mainsrp-pager"]/div/div/div/div[2]/input'))) 42 | #检测提交框 43 | submit = wait.until( 44 | EC.element_to_be_clickable((By.XPATH, '//*[@id="mainsrp-pager"]/div/div/div/div[2]/span[3]'))) 45 | #清空输入 46 | input.clear() 47 | #输入数字 48 | input.send_keys(page) 49 | #点击 50 | submit.click() 51 | 52 | #等待页面加载出来 53 | wait.until( 54 | EC.text_to_be_present_in_element((By.CSS_SELECTOR, '#mainsrp-pager li.item.active > span'), str(page))) 55 | wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.m-itemlist .items .item'))) 56 | get_products() 57 | except: 58 | #重试 59 | scratch_page(page) 60 | def main(): 61 | 62 | scratch_page(1) 63 | 64 | if __name__ == '__main__': 65 | main() -------------------------------------------------------------------------------- /代码/第九章/tb_change2.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | from selenium.common.exceptions import TimeoutException 3 | from selenium.webdriver.common.by import By 4 | from selenium.webdriver.support import expected_conditions as EC 5 | from selenium.webdriver.support.wait import WebDriverWait 6 | from urllib.parse import quote 7 | from pyquery import PyQuery as PQ 8 | import pymysql 9 | 10 | conn=pymysql.connect(host='localhost',port=3306,db='tb',user='root',passwd='password',charset='utf8') 11 | cur=conn.cursor() 12 | 13 | def mysql_save(product): 14 | insert="INSERT INTO info VALUES('{0}', '{1}', '{2}', '{3}', '{4}', '{5}')".format(product[0],product[1],product[2],product[3],product[4],product[5]) 15 | cur.execute(insert) 16 | conn.commit() 17 | print(product) 18 | 19 | #提取商品数据 20 | def get_products(): 21 | #获取页面源代码 22 | html=dr.page_source 23 | pq_file=PQ(html) 24 | all=pq_file('#mainsrp-itemlist .items .item').items() 25 | for i in all: 26 | product = [i.find('.pic .img').attr('data-src'), 27 | i.find('.price').text(), 28 | i.find('.deal-cnt').text(), 29 | i.find('.title').text(), 30 | i.find('.shop').text(), 31 | i.find('.location').text()] 32 | mysql_save(product) 33 | 34 | #打开浏览器 35 | dr=webdriver.Chrome() 36 | wait=WebDriverWait(dr,10) 37 | keyword='type c' 38 | 39 | def scratch_page(page): 40 | #输出页面 41 | print('正在爬取第',page,'页') 42 | #防止某个页面失败导致爬虫停止 43 | try: 44 | #跳转关键词链接 45 | url='https://s.taobao.com/search?q='+quote(keyword) 46 | dr.get(url) 47 | 48 | if page > 1: 49 | #检测输入框 50 | input=wait.until( 51 | EC.presence_of_element_located((By.XPATH, '//*[@id="mainsrp-pager"]/div/div/div/div[2]/input'))) 52 | #检测提交框 53 | submit = wait.until( 54 | EC.element_to_be_clickable((By.XPATH, '//*[@id="mainsrp-pager"]/div/div/div/div[2]/span[3]'))) 55 | #清空输入 56 | input.clear() 57 | #输入数字 58 | input.send_keys(page) 59 | #点击 60 | submit.click() 61 | 62 | #等待页面加载出来 63 | wait.until( 64 | EC.text_to_be_present_in_element((By.CSS_SELECTOR, '#mainsrp-pager li.item.active > span'), str(page))) 65 | wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.m-itemlist .items .item'))) 66 | get_products() 67 | except: 68 | #重试 69 | scratch_page(page) 70 | end_page=101 71 | def main(): 72 | 73 | for i in range(1, end_page): 74 | scratch_page(i) 75 | 76 | if __name__ == '__main__': 77 | main() -------------------------------------------------------------------------------- /代码/第九章/test.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | from selenium.common.exceptions import TimeoutException 3 | from selenium.webdriver.common.by import By 4 | from selenium.webdriver.support import expected_conditions as EC 5 | from selenium.webdriver.support.wait import WebDriverWait 6 | from urllib.parse import quote 7 | from pyquery import PyQuery as pq 8 | import pymysql 9 | 10 | #连接到数据库 11 | conn=pymysql.connect(host='localhost',port=3306,db='tb',user='root',passwd='password',charset='utf8') 12 | cur=conn.cursor() 13 | 14 | #定义存储到数据库函数 15 | def save_to_mysql(product): 16 | 17 | insert="INSERT INTO info VALUES('{0}', '{1}', '{2}', '{3}', '{4}', '{5}')".format(product[0],product[1],product[2],product[3],product[4],product[5]) 18 | cur.execute(insert) 19 | conn.commit() 20 | 21 | 22 | #提取商品数据 23 | def get_products(): 24 | #获取页面源代码 25 | html = browser.page_source 26 | doc = pq(html) 27 | items = doc('#mainsrp-itemlist .items .item').items() 28 | for item in items: 29 | product = [item.find('.pic .img').attr('data-src'), 30 | item.find('.price').text(), 31 | item.find('.deal-cnt').text(), 32 | item.find('.title').text(), 33 | item.find('.shop').text(), 34 | item.find('.location').text()] 35 | print(product) 36 | save_to_mysql(product) 37 | print("done") 38 | 39 | browser = webdriver.Chrome() 40 | wait = WebDriverWait(browser, 10) 41 | KEYWORD = 'iPad' 42 | 43 | def scratch_page(page): 44 | """ 45 | 抓取索引页 46 | :param page: 页码 47 | """ 48 | print('正在爬取第', page, '页') 49 | try: 50 | url = 'https://s.taobao.com/search?q=' + quote(KEYWORD) 51 | browser.get(url) 52 | if page > 1: 53 | input = wait.until( 54 | EC.presence_of_element_located((By.CSS_SELECTOR, '#mainsrp-pager div.form > input'))) 55 | submit = wait.until( 56 | EC.element_to_be_clickable((By.CSS_SELECTOR, '#mainsrp-pager div.form > span.btn.J_Submit'))) 57 | input.clear() 58 | input.send_keys(page) 59 | submit.click() 60 | wait.until( 61 | EC.text_to_be_present_in_element((By.CSS_SELECTOR, '#mainsrp-pager li.item.active > span'), str(page))) 62 | wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.m-itemlist .items .item'))) 63 | get_products() 64 | except TimeoutException: 65 | scratch_page(page) 66 | end_page=101 67 | def main(): 68 | 69 | for i in range(1, end_page): 70 | scratch_page(i) 71 | 72 | if __name__ == '__main__': 73 | main() 74 | -------------------------------------------------------------------------------- /代码/第九章/test2.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/代码/第九章/test2.py -------------------------------------------------------------------------------- /代码/第二章/2.1.py: -------------------------------------------------------------------------------- 1 | #导入selenuim库 2 | from selenium import webdriver 3 | from selenium.webdriver.common.keys import Keys 4 | 5 | #下面一行代码用于启动Chrome浏览器 6 | driver = webdriver.Firefox() 7 | 8 | #然后我们打开Python官方网站 9 | driver.get("http://www.python.org") 10 | -------------------------------------------------------------------------------- /代码/第二章/2.2.1.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | from selenium.webdriver.common.keys import Keys 3 | 4 | driver = webdriver.Chrome() 5 | 6 | driver.navigate().to("https://baidu.com") -------------------------------------------------------------------------------- /代码/第二章/2.2.2.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | from selenium.webdriver.common.keys import Keys 3 | 4 | driver = webdriver.Chrome() 5 | driver.get("https://baidu.com") 6 | print("设置浏览器宽800、高480显示") 7 | driver.set_window_size(800, 480) 8 | -------------------------------------------------------------------------------- /代码/第二章/2.3.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | import time 3 | 4 | driver = webdriver.Chrome() 5 | driver.get("https://baidu.com") 6 | 7 | time.sleep(2) 8 | driver.get("http://news.baidu.com") 9 | 10 | time.sleep(2) 11 | driver.back() 12 | 13 | time.sleep(2) 14 | driver.forward() 15 | 16 | time.sleep(2) 17 | driver.refresh() 18 | 19 | time.sleep(2) 20 | driver.quit() -------------------------------------------------------------------------------- /代码/第二章/2.4.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | from selenium.webdriver.common.keys import Keys 3 | import time 4 | driver = webdriver.Chrome() 5 | driver.get("https://www.python.org/") 6 | 7 | 8 | time.sleep(2) 9 | 10 | JS="window.scrollTo(10000,document.body.scrollHeight)" 11 | driver.execute_script(JS) 12 | 13 | time.sleep(2) 14 | from selenium import webdriver 15 | from selenium.webdriver.common.keys import Keys 16 | import time 17 | driver = webdriver.Chrome() 18 | -------------------------------------------------------------------------------- /代码/第二章/2.5.py: -------------------------------------------------------------------------------- 1 | #coding=utf-8 2 | from selenium import webdriver 3 | import time 4 | from selenium.webdriver import ActionChains 5 | #今日头条首页为例,下拉第二条思路 6 | #我们利用将鼠标移动到最后一个元素位置模拟下拉 7 | driver=webdriver.Chrome() 8 | driver.get("https://www.toutiao.com/") 9 | 10 | driver.save_screenshot("save_1.png")#图片是为了比较变化 11 | 12 | ac=driver.find_element_by_xpath("//ul[@infinite-scroll-disabled]/li[last()]") 13 | ActionChains(driver).move_to_element(ac).perform()#定位鼠标到指定元素 14 | 15 | time.sleep(2)#给加载内容预留2秒 16 | driver.save_screenshot("save_2.png") 17 | -------------------------------------------------------------------------------- /代码/第二章/2.6.1.py: -------------------------------------------------------------------------------- 1 | #coding=utf-8 2 | from selenium import webdriver 3 | import time 4 | from selenium.webdriver import ActionChains 5 | 6 | driver=webdriver.Chrome() 7 | driver.get("https://www.baidu.com/") 8 | 9 | driver.find_element_by_id("kw").send_keys("selenium") 10 | driver.find_element_by_id("su").click() 11 | 12 | #获取cookie 13 | cookies=driver.get_cookies() 14 | #返回字典的key为的BAIDUID的cookie 15 | cookie=driver.get_cookie("BAIDUID") 16 | print(cookies) 17 | print(cookie) 18 | 19 | #删除所有cookie信息。 20 | driver.delete_all_cookies() 21 | 22 | #退出 23 | driver.quit() 24 | -------------------------------------------------------------------------------- /代码/第二章/2.6.2.py: -------------------------------------------------------------------------------- 1 | #coding=utf-8 2 | 3 | from selenium import webdriver 4 | import time 5 | from selenium.webdriver import ActionChains 6 | 7 | driver=webdriver.Chrome() 8 | 9 | driver.get ("http://www.youdao.com") 10 | # 向cookie中name和value中添加会话信息 11 | driver.add_cookie({"name":"testname_1234567890"},{"value":"testvalue_1234567890"}) 12 | 13 | # 遍历cookie中name和value信息并打印对应的信息,并包括添加对应的信息 14 | for cookie in driver.get_cookies (): 15 | print("%s<->%s" % (cookie['name'], cookie['value'])) 16 | 17 | #退出 18 | driver.quit() 19 | print("all_done") 20 | 21 | -------------------------------------------------------------------------------- /代码/第二章/2.6.3.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | import time 3 | 4 | driver = webdriver.Chrome() 5 | driver.get("http://192.168.1.51/oneCard/login") 6 | #将用户名密码写入浏览器cookie中 7 | driver.add_cookie({'name':'username','value':'super'}) 8 | driver.add_cookie({'name':'password','value':'asd,./123*.'}) 9 | #再次访问网站,将会自动登录 10 | driver.get("http://192.168.1.51/oneCard/login") -------------------------------------------------------------------------------- /代码/第二章/2.7.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | import time 3 | 4 | driver = webdriver.Chrome() 5 | driver.get("http://192.168.1.51/oneCard/login") 6 | #将用户名密码写入浏览器cookie中 7 | driver.add_cookie({'name':'username','value':'super'}) 8 | driver.add_cookie({'name':'password','value':'asd,./123*.'}) 9 | #再次访问网站,将会自动登录 10 | driver.get("http://192.168.1.51/oneCard/login") -------------------------------------------------------------------------------- /代码/第二章/2.9.py: -------------------------------------------------------------------------------- 1 | # coding=utf-8 2 | 3 | from selenium import webdriver 4 | import time 5 | 6 | #打开浏览器,窗口最大化 7 | driver=webdriver.Chrome() 8 | driver.maximize_window() # 9 | 10 | driver.get("http://baidu.com") 11 | 12 | #停留两秒后打开搜狗搜索 13 | time.sleep(2) 14 | JS1='window.open("https://www.sogou.com");' 15 | driver.execute_script(JS1) 16 | #停留两秒后打开有道翻译 17 | time.sleep(2) 18 | JS2='window.open("https://fanyi.youdao.com/");' 19 | driver.execute_script(JS2) 20 | 21 | #退出 22 | #driver.quit() 23 | -------------------------------------------------------------------------------- /代码/第五章/5.1.py: -------------------------------------------------------------------------------- 1 | #常规的导入库 2 | from selenium import webdriver 3 | import time 4 | 5 | #启动浏览器,打开页面 6 | dr=webdriver.Chrome() 7 | dr.get("https://www.python.org/") 8 | 9 | #退出 10 | driver.quit() -------------------------------------------------------------------------------- /代码/第五章/5.2.py: -------------------------------------------------------------------------------- 1 | 2 | #常规的导入库 3 | from selenium import webdriver 4 | import time 5 | 6 | #启动浏览器,打开页面 7 | dr=webdriver.Chrome() 8 | dr.get("https://www.python.org/") 9 | 10 | #修改标题 11 | time.sleep(1) 12 | JS1="document.title='xxxxxx';" 13 | dr.execute_script(JS1) 14 | 15 | #弹窗显示现在的标题 16 | time.sleep(1) 17 | JS2=r"alert($(document).attr('title'));" 18 | dr.execute_script(JS2) 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /代码/第五章/5.3.py: -------------------------------------------------------------------------------- 1 | 2 | #常规的导入库 3 | from selenium import webdriver 4 | import time 5 | 6 | #启动浏览器,打开页面 7 | dr=webdriver.Chrome() 8 | dr.get("https://www.python.org/") 9 | 10 | #修改标题 11 | time.sleep(1) 12 | JS1="document.title='xxxxxx';" 13 | dr.execute_script(JS1) 14 | 15 | ''' 16 | #弹窗显示现在的标题 17 | time.sleep(1) 18 | JS2=r"alert($(document).attr('title'));" 19 | dr.execute_script(JS2) 20 | ''' 21 | 22 | time.sleep(1) 23 | dr.find_element_by_id("id-search-field").send_keys("pycon") 24 | dr.find_element_by_id("submit").click() 25 | 26 | 27 | -------------------------------------------------------------------------------- /代码/第五章/5.4.py: -------------------------------------------------------------------------------- 1 | 2 | #常规的导入库 3 | from selenium import webdriver 4 | import time 5 | 6 | #启动浏览器,打开页面 7 | dr=webdriver.Chrome() 8 | dr.get("https://www.python.org/") 9 | 10 | #修改标题 11 | time.sleep(1) 12 | JS1="document.title='xxxxxx';" 13 | dr.execute_script(JS1) 14 | 15 | 16 | time.sleep(1) 17 | dr.find_element_by_id("id-search-field").send_keys("pycon") 18 | dr.find_element_by_id("submit").click() 19 | 20 | #通过CSS样式 21 | dr.find_element_by_css_selector(r'#content > div > section > form > ul > li:nth-child(1) > h3 > a').click() 22 | dr.save_screenshot("codingpy.png") 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /代码/第五章/5.5.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 写法一 3 | from selenium import webdriver 4 | from selenium.webdriver.support.wait import WebDriverWait 5 | from selenium.webdriver.support import expected_conditions as EC 6 | from selenium.webdriver.common.by import By 7 | import time 8 | dr = webdriver.Chrome() 9 | dr.implicitly_wait(10) # 隐性等待和显性等待可以同时用,但要注意:等待的最长时间取两者之中的大者 10 | dr.get('https://www.csdn.net/') 11 | locator = (By.LINK_TEXT,u'首页') 12 | 13 | try: 14 | #EC.presence_of_element_located()传入的参数是一个集合,我们可以向 15 | 16 | WebDriverWait(dr, 20, 0.5).until(EC.presence_of_element_located(locator)) 17 | 18 | finally: 19 | print(dr.find_element_by_link_text('首页').get_attribute('href')) 20 | time.sleep(2) 21 | dr.quit() -------------------------------------------------------------------------------- /代码/第五章/5.6.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 写法二 3 | from selenium import webdriver 4 | from selenium.webdriver.support.wait import WebDriverWait 5 | from selenium.webdriver.support import expected_conditions as EC 6 | from selenium.webdriver.common.by import By 7 | import time 8 | dr = webdriver.Chrome() 9 | dr.implicitly_wait(10) # 隐性等待和显性等待可以同时用,但要注意:等待的最长时间取两者之中的大者 10 | dr.get('https://www.csdn.net/') 11 | 12 | try: 13 | #EC.presence_of_element_located()传入的参数是一个集合,我们可以向 14 | 15 | WebDriverWait(dr, 20, 0.5).until(EC.presence_of_element_located((By.LINK_TEXT,u'首页'))) 16 | finally: 17 | print(dr.find_element_by_link_text('首页').get_attribute('href')) 18 | time.sleep(2) 19 | dr.quit() -------------------------------------------------------------------------------- /代码/第五章/5.7.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # @Author: name 3 | # @Date: 2018-07-29 14:48:01 4 | # @Last Modified by: name 5 | # @Last Modified time: 2018-07-30 09:33:59 6 | #需要特别说明的是:隐性等待对整个driver的周期都起作用,所以只要设置一次即可,我曾看到有人把隐性等待当成了sleep在用,走哪儿都来一下…、 7 | from selenium import webdriver 8 | 9 | dr = webdriver.Chrome() 10 | dr.implicitly_wait(30) # 隐性等待,最长等30秒 11 | dr.get('https://www.csdn.net/') 12 | #dr.current_url 13 | print(dr.find_element_by_link_text('首页').get_attribute('href')) 14 | dr.quit() -------------------------------------------------------------------------------- /代码/第五章/5.8.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # @Author: name 3 | # @Date: 2018-07-29 14:48:01 4 | # @Last Modified by: name 5 | # @Last Modified time: 2018-07-30 09:34:15 6 | #需要特别说明的是:隐性等待对整个driver的周期都起作用,所以只要设置一次即可,我曾看到有人把隐性等待当成了sleep在用,走哪儿都来一下…、 7 | from selenium import webdriver 8 | import time 9 | dr = webdriver.Chrome() 10 | 11 | dr.get('https://www.csdn.net/') 12 | time.sleep(3) 13 | print(dr.current_url) 14 | dr.quit() -------------------------------------------------------------------------------- /代码/第八章/maoyan1.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | import time 3 | numbers_list=[0,10,20,30,40,50,60,70,80,90] 4 | 5 | url_list=[] 6 | for i in numbers_list: 7 | url="https://maoyan.com/board/4?offset=%d" %i 8 | url_list.append(url) 9 | print("获取地址:%s" %url) 10 | 11 | dr=webdriver.Chrome() 12 | 13 | for i in url_list: 14 | dr.get(i) 15 | time.sleep(1) 16 | for j in range(1,10): 17 | #获取演员 18 | xpath2='//*[@id="app"]/div/div/div[1]/dl/dd[%d]/div/div/div[1]/p[2]' %j 19 | actor=dr.find_element_by_xpath(xpath2).text 20 | 21 | #获取分数 22 | xpath3='//*[@id="app"]/div/div/div[1]/dl/dd[%d]/div/div/div[2]/p' %j 23 | score=dr.find_element_by_xpath(xpath3).text 24 | 25 | #获取标题 26 | xpath1='//*[@id="app"]/div/div/div[1]/dl/dd[%d]/div/div/div[1]/p[1]/a' %j 27 | title=dr.find_element_by_xpath(xpath1).get_attribute('title') 28 | 29 | #获取电影介绍 30 | dr.find_element_by_xpath(xpath1).click() 31 | xpath4='//*[@id="app"]/div/div[1]/div/div[2]/div[1]/div[1]/div[2]/span' 32 | introduce=dr.find_element_by_xpath(xpath4).text 33 | 34 | print('电影标题:%s' %title) 35 | print("演员:%s" %actor) 36 | print("分数:%s" %score) 37 | print(introduce) 38 | dr.get(i) 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | #导演 47 | ''' 48 | 49 | //*[@id="app"]/div/div/div[1]/dl/dd[2]/div/div/div[1]/p[2] 50 | ''' 51 | 52 | dr.close() 53 | -------------------------------------------------------------------------------- /代码/第八章/maoyan2.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | import time 3 | import csv 4 | 5 | numbers_list=[0,10,20,30,40,50,60,70,80,90] 6 | 7 | url_list=[] 8 | for i in numbers_list: 9 | url="https://maoyan.com/board/4?offset=%d" %i 10 | url_list.append(url) 11 | print("获取地址:%s" %url) 12 | 13 | dr=webdriver.Chrome() 14 | 15 | csv_file=open("writer.csv","w+",newline='',encoding='utf-8-sig') 16 | writer=csv.writer(csv_file) 17 | 18 | for i in url_list: 19 | 20 | dr.get(i) 21 | time.sleep(1) 22 | print("正在链接为%s的页面" %i) 23 | 24 | for j in range(1,11): 25 | 26 | #获取演员 27 | xpath2='//*[@id="app"]/div/div/div[1]/dl/dd[%d]/div/div/div[1]/p[2]' %j 28 | actor=dr.find_element_by_xpath(xpath2).text 29 | 30 | #获取分数 31 | xpath3='//*[@id="app"]/div/div/div[1]/dl/dd[%d]/div/div/div[2]/p' %j 32 | score=dr.find_element_by_xpath(xpath3).text 33 | 34 | #获取标题 35 | xpath1='//*[@id="app"]/div/div/div[1]/dl/dd[%d]/div/div/div[1]/p[1]/a' %j 36 | title=dr.find_element_by_xpath(xpath1).get_attribute('title') 37 | 38 | #获取电影介绍 39 | dr.find_element_by_xpath(xpath1).click() 40 | xpath4='//*[@id="app"]/div/div[1]/div/div[2]/div[1]/div[1]/div[2]/span' 41 | introduce=dr.find_element_by_xpath(xpath4).text 42 | 43 | #拼接 44 | text=[] 45 | text.append(title) 46 | text.append(actor) 47 | text.append(score) 48 | text.append(introduce) 49 | 50 | #写入CSV 51 | writer.writerow(text) 52 | print("-----正在获取第%s条" %j) 53 | #返回初始页面 54 | dr.get(i) 55 | 56 | print("all_done") 57 | dr.close() 58 | -------------------------------------------------------------------------------- /代码/第六章/6.1.py: -------------------------------------------------------------------------------- 1 | #导入库 2 | from selenium import webdriver 3 | 4 | #打开浏览器和网页 5 | dr=webdriver.Chrome() 6 | dr.get('http://top.baidu.com/') 7 | 8 | #整合 Xpath 9 | for i in range(10): 10 | xpath='//*[@id="hot-list"]/li['+str(i+1)+']/a[1]' 11 | print(dr.find_element_by_xpath(xpath).get_attribute('title')) 12 | -------------------------------------------------------------------------------- /代码/第六章/6.2.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | from selenium.webdriver.support.wait import WebDriverWait 3 | from selenium.webdriver.support import expected_conditions as EC 4 | from selenium.webdriver.common.by import By 5 | 6 | dr=webdriver.Chrome() 7 | dr.get('http://top.baidu.com/') 8 | 9 | hw_dict=[] 10 | 11 | for i in range(10): 12 | xpath='//*[@id="hot-list"]/li['+str(i+1)+']/a[1]' 13 | value=dr.find_element_by_xpath(xpath).get_attribute('title') 14 | hw_dict.append(value) 15 | 16 | keyword=hw_dict[0] 17 | URL='https://www.toutiao.com/search/?keyword=%s' %keyword 18 | dr.get(URL) 19 | 20 | 21 | XPath='//*[@id="J_section_0"]/div/div/div[1]/div/div[1]/a/span' 22 | 23 | try: 24 | WebDriverWait(dr, 20, 0.5).until(EC.presence_of_element_located((By.XPATH,XPath))) 25 | finally: 26 | dr.find_element_by_xpath(XPath).click() 27 | -------------------------------------------------------------------------------- /代码/第六章/6.3.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # @Author: name 3 | # @Date: 2018-08-01 14:58:04 4 | # @Last Modified by: name 5 | # @Last Modified time: 2018-08-01 14:59:01 6 | from selenium import webdriver 7 | dr=webdriver.Chrome() 8 | dr.get('http://top.baidu.com/') 9 | 10 | hw_dict=[] 11 | 12 | for i in range(10): 13 | xpath='//*[@id="hot-list"]/li['+str(i+1)+']/a[1]' 14 | value=dr.find_element_by_xpath(xpath).get_attribute('title') 15 | hw_dict.append(value) 16 | 17 | keyword=hw_dict[0] 18 | URL='https://www.toutiao.com/search/?keyword=%s' %keyword 19 | dr.get(URL) -------------------------------------------------------------------------------- /代码/第六章/6.4.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | from selenium.webdriver.support.wait import WebDriverWait 3 | from selenium.webdriver.support import expected_conditions as EC 4 | from selenium.webdriver.common.by import By 5 | import time 6 | 7 | def getinfo(): 8 | id_=dr.find_element_by_xpath('//*/div[@class="article-sub"]/span[1]') 9 | time_=dr.find_element_by_xpath('//*/div[@class="article-sub"]/span[2]') 10 | title_=dr.find_element_by_xpath('//*/h1[@class="article-title"]') 11 | text_=dr.find_element_by_xpath('//*/div[@class="article-content"]') 12 | item=[id_.text,time_.text,title_.text,text_.text] 13 | return item 14 | 15 | dr=webdriver.Chrome() 16 | dr.get('http://top.baidu.com/') 17 | 18 | hw_dict=[] 19 | 20 | for i in range(10): 21 | xpath='//*[@id="hot-list"]/li['+str(i+1)+']/a[1]' 22 | value=dr.find_element_by_xpath(xpath).get_attribute('title') 23 | hw_dict.append(value) 24 | 25 | keyword=hw_dict[0] 26 | URL='https://www.toutiao.com/search/?keyword=%s' %keyword 27 | dr.get(URL) 28 | 29 | 30 | XPath='//*[@id="J_section_0"]/div/div/div[1]/div/div[1]/a/span' 31 | 32 | try: 33 | WebDriverWait(dr, 20, 0.5).until(EC.presence_of_element_located((By.XPATH,XPath))) 34 | finally: 35 | dr.find_element_by_xpath(XPath).click() 36 | 37 | time.sleep(1) 38 | 39 | all_handles = dr.window_handles 40 | dr.switch_to_window(all_handles[-1]) 41 | 42 | info=getinfo() 43 | print(info) 44 | 45 | -------------------------------------------------------------------------------- /代码/第六章/from selenium import webdriver.py: -------------------------------------------------------------------------------- 1 | from selenium import webdriver 2 | dr=webdriver.Chrome() 3 | dr.get('http://top.baidu.com/') 4 | ''' 5 | //*[@id="hot-list"]/li[1] 6 | //*[@id="hot-list"]/li[2] 7 | ''' 8 | 9 | for i in range(10): 10 | xpath='//*[@id="hot-list"]/li['+str(i+1)+']/a[1]' 11 | print(dr.find_element_by_xpath(xpath).get_attribute('title')) -------------------------------------------------------------------------------- /代码/第六章/pc.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # @Author: name 3 | # @Date: 2018-07-30 12:39:18 4 | # @Last Modified by: name 5 | # @Last Modified time: 2018-07-30 13:59:13 6 | from selenium import webdriver 7 | from selenium.webdriver.common.action_chains import ActionChains 8 | from selenium.webdriver.common.keys import Keys 9 | import time 10 | import bs4 11 | from bs4 import BeautifulSoup 12 | import os 13 | url="https://www.toutiao.com/" 14 | driver=webdriver.Chrome() 15 | 16 | def get_urls(url): 17 | 18 | driver.get(url) #打开网址 19 | time.sleep(1) 20 | driver.refresh() #这里要刷新一下,不然第一次加载没反应 21 | driver.implicitly_wait(2) #隐性等待2秒 22 | for i in range(100): #这里循环次数尽量大,保证加载到底 23 | ActionChains(driver).key_down(Keys.DOWN).perform() #相当于一直按着DOWN键 24 | print(f'已完成{i}次') 25 | time.sleep(3) 26 | soup = BeautifulSoup(driver.page_source, 'html.parser') 27 | body = soup.find_all(class_='link title') #提取网址 28 | print(soup) 29 | print(body) 30 | for i in range(len(body)): 31 | url = 'https://www.toutiao.com' + body[i].get('href') 32 | print(f'已完成{i}个') 33 | with open('urls.txt', 'w+') as f: #把网址按行保存到urls.txt 34 | print(url) 35 | f.writelines(url) 36 | f.write('\n') 37 | 38 | 39 | 40 | def get_htmls(): 41 | with open('urls.txt', 'r') as f: 42 | urls = f.readlines() 43 | l = len(urls) 44 | htmls = [] 45 | for i in range(l): 46 | print(urls[i]) 47 | driver.get(urls[i]) 48 | driver.execute_script('window.scrollTo(0, document.body.scrollHeight)') #加载到底部,保证图片文章中的图片加载完 49 | soup = BeautifulSoup(driver.page_source, 'html.parser') 50 | try: #如果异常,刷新一下 51 | body = str(soup.find_all(class_='article-title')[0]) + str(soup.find_all( 52 | class_='article-sub')[0]) + str(soup.find_all(class_='article-content')[0]) #获取标题,时间,正文 53 | except IndexError: 54 | driver.refresh() 55 | time.sleep(2) 56 | if not os.path.exists('htmls'): 57 | os.mkdir('htmls') 58 | with open(f'htmls/{i}.html', 'w') as f: #保存到htmls文件夹下 59 | f.write(body) 60 | print(f'{i}.html 完成, 共{l}个') 61 | time.sleep(3) 62 | driver.quit() 63 | get_urls(url) -------------------------------------------------------------------------------- /代码/第六章/pc3.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | import csv 3 | import time 4 | from selenium import webdriver 5 | from selenium.webdriver.common.action_chains import ActionChains 6 | from selenium.webdriver.common.keys import Keys 7 | def write(item): 8 | with open(r"F:\DOCUMENT\SELENIUM\第六章\jjtt.csv","a") as f: 9 | writer=csv.writer(f) 10 | try: 11 | writer.writerow(item) 12 | except: 13 | print("error") 14 | 15 | def getinfo(): 16 | id_=dr.find_element_by_xpath('//*/div[@class="article-sub"]/span[1]') 17 | time_=dr.find_element_by_xpath('//*/div[@class="article-sub"]/span[2]') 18 | title_=dr.find_element_by_xpath('//*/h1[@class="article-title"]') 19 | text_=dr.find_element_by_xpath('//*/div[@class="article-content"]') 20 | item=[id_.text,time_.text,title_.text,text_.text] 21 | return item 22 | 23 | url="https://www.toutiao.com/search/?keyword=selenium" 24 | dr=webdriver.Chrome() 25 | dr.implicitly_wait(2) 26 | dr.get(url) 27 | 28 | time.sleep(1) 29 | 30 | for i in range(100): #这里循环次数尽量大,保证加载到底 31 | 32 | ActionChains(dr).key_down(Keys.DOWN).perform() #相当于一直按着DOWN键 33 | print(f'下拉已完成{i}次') 34 | 35 | time.sleep(1) 36 | url_=dr.find_elements_by_css_selector('.title') 37 | print(url_) 38 | 39 | url_list=[] 40 | for i in url_: 41 | url_list.append(i.get_attribute('href')) 42 | print(url_list) 43 | 44 | for i in url_list: 45 | try: 46 | dr.get(i) 47 | write(getinfo()) 48 | dr.get(url) 49 | print('已完成书写') 50 | except: 51 | print("error") 52 | 53 | -------------------------------------------------------------------------------- /代码/第六章/pc6.py: -------------------------------------------------------------------------------- 1 | #coding:utf-8 2 | import csv 3 | import time 4 | from selenium import webdriver 5 | from selenium.webdriver.common.action_chains import ActionChains 6 | from selenium.webdriver.common.keys import Keys 7 | 8 | def write(item): 9 | with open(r"F:\DOCUMENT\SELENIUM\第六章\jrtt.csv","a") as f: 10 | writer=csv.writer(f) 11 | try: 12 | writer.writerow(item) 13 | except: 14 | print("error") 15 | 16 | def getinfo(): 17 | id_=dr.find_element_by_xpath('//*/div[@class="article-sub"]/span[1]') 18 | time_=dr.find_element_by_xpath('//*/div[@class="article-sub"]/span[2]') 19 | title_=dr.find_element_by_xpath('//*/h1[@class="article-title"]') 20 | text_=dr.find_element_by_xpath('//*/div[@class="article-content"]') 21 | item=[id_.text,time_.text,title_.text,text_.text] 22 | return item 23 | 24 | url="https://www.toutiao.com/search/?keyword=selenium" 25 | dr=webdriver.Chrome() 26 | dr.implicitly_wait(2) 27 | dr.get(url) 28 | 29 | #给页面留下足够的时间加载 30 | time.sleep(1) 31 | 32 | #下拉页面,刷新出足够的条数 33 | for i in range(10000): #这里循环次数尽量大,保证加载到底 34 | #相当于一直按着DOWN键 35 | ActionChains(dr).key_down(Keys.DOWN).key_up(Keys.DOWN).perform() 36 | print(f'下拉已完成{i}次') 37 | 38 | #再次留下时间加载,因为无法确定最后刷新到了哪一个,所以不用显式等待 39 | time.sleep(1) 40 | url_=dr.find_elements_by_css_selector('.title') 41 | print(url_) 42 | 43 | #链接列表 44 | url_list=[] 45 | for i in url_: 46 | url_list.append(i.get_attribute('href')) 47 | print(url_list) 48 | 49 | #考虑到部分可能会出错,我们使用try,except来接收报错 50 | for i in url_list: 51 | try: 52 | 53 | dr.get(i) 54 | time.sleep(0.5) 55 | write(getinfo()) 56 | dr.get(url) 57 | print('已完成写入') 58 | except: 59 | print("error") 60 | print('all_done') -------------------------------------------------------------------------------- /代码/第六章/rc.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import time 3 | from selenium import webdriver 4 | 5 | url="http://top.baidu.com/" 6 | dr=webdriver.Chrome() 7 | dr.implicitly_wait(2) 8 | dr.get(url) 9 | 10 | list_=[] 11 | for i in dr.find_elements_by_class_name('num-top'): 12 | print(i) 13 | print(i.get_attribute('title')) 14 | -------------------------------------------------------------------------------- /代码/第六章/time.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # @Author: name 3 | # @Date: 2018-08-01 19:15:54 4 | # @Last Modified by: name 5 | # @Last Modified time: 2018-08-01 19:36:48 6 | import win32api,win32con 7 | 8 | 9 | #弹窗提示 10 | ''' 11 | 参数1代表系统,暂时只能为0 12 | 参数2代表消息内容 13 | 参数3代表标题 14 | 参数4代表不同的弹框类型从0-6有效 15 | ''' 16 | #win32api.MessageBox(0, "数据采集全部完成\n共计xxx条\n", "Selnium自动化爬虫", 4) 17 | # -*- coding: utf-8 -*- 18 | #!/bin/env python 19 | 20 | def test1(): 21 | n=0 22 | for i in range(101): 23 | n+=i 24 | return n 25 | 26 | def test2(): 27 | return sum(range(101)) 28 | 29 | def test3(): 30 | return sum(x for x in range(101)) 31 | 32 | if __name__=='__main__': 33 | from timeit import Timer 34 | t1=Timer("test1()","from __main__ import test1") 35 | t2=Timer("test2()","from __main__ import test2") 36 | t3=Timer("test3()","from __main__ import test3") 37 | print(t1.timeit(1000000)) 38 | print(t2.timeit(1000000)) 39 | print(t3.timeit(1000000)) 40 | -------------------------------------------------------------------------------- /代码/第十一章/thread.py: -------------------------------------------------------------------------------- 1 | 2 | from time import ctime 3 | import time 4 | 5 | def test1(): 6 | for i in range(3): 7 | print("this is test1 {}".format(ctime())) 8 | time.sleep(1) 9 | 10 | def test2(): 11 | for i in range(3): 12 | print("this is test2 {}".format(ctime())) 13 | time.sleep(1) 14 | 15 | if __name__ == '__main__': 16 | test1() 17 | test2() 18 | print("done {}".format(ctime())) -------------------------------------------------------------------------------- /代码/第十一章/thread2.py: -------------------------------------------------------------------------------- 1 | 2 | from time import ctime 3 | import time 4 | import threading 5 | 6 | def test1(): 7 | for i in range(3): 8 | print("this is test1 {}".format(ctime())) 9 | time.sleep(1) 10 | 11 | def test2(): 12 | for i in range(3): 13 | print("this is test2 {}".format(ctime())) 14 | time.sleep(1) 15 | 16 | threads = [] 17 | t1 = threading.Thread(target=test1) 18 | threads.append(t1) 19 | t2 = threading.Thread(target=test2) 20 | threads.append(t2) 21 | 22 | if __name__ == '__main__': 23 | for t in threads: 24 | t.setDaemon(True) 25 | t.start() 26 | t.join() 27 | print("done {}".format(ctime())) -------------------------------------------------------------------------------- /代码/第十一章/thread_lock.py: -------------------------------------------------------------------------------- 1 | import threading # 导入threading模块 2 | import time # 导入time模块 3 | class thread_test(threading.Thread): # 通过继承创建类 4 | def __init__(self,threadname): # 初始化方法 5 | threading.Thread.__init__(self,name = threadname) 6 | def run(self): # 重载run方法 7 | global number # 使用global表明number为全局变量 8 | lock.acquire() # 调用lock的acquire方法 9 | number = number + 1 10 | time.sleep(1) 11 | print("the value of number is {}".format(number)) 12 | lock.release() # 调用lock的release方法 13 | lock = threading.Lock() # 类实例化 14 | threadlist = [] # 定义列表 15 | for i in range(5): 16 | t = thread_test(str(i)) # 类实例化 17 | threadlist.append(t) # 将类对象添加到列表中 18 | number=0 # 将number赋值为0 19 | for i in threadlist: 20 | i.start() # 依次运行线程 -------------------------------------------------------------------------------- /代码/第十一章/threadlock2.py: -------------------------------------------------------------------------------- 1 | import threading # 导入threading模块 2 | import time # 导入time模块 3 | class thread_test(threading.Thread): # 通过继承创建类 4 | def __init__(self,threadname): # 初始化方法 5 | threading.Thread.__init__(self,name = threadname) 6 | def run(self): # 重载run方法 7 | global number # 使用global表明number为全局变量 8 | # 调用lock的acquire方法 9 | number = number + 1 10 | time.sleep(1) 11 | print("the value of number is {}".format(number)) 12 | # 调用lock的release方法 13 | # 类实例化 14 | threadlist = [] # 定义列表 15 | for i in range(5): 16 | t = thread_test(str(i)) # 类实例化 17 | threadlist.append(t) # 将类对象添加到列表中 18 | number=0 # 将number赋值为0 19 | for i in threadlist: 20 | i.start() # 依次运行线程 -------------------------------------------------------------------------------- /代码/第十七章/17.1.py: -------------------------------------------------------------------------------- 1 | #导入库 2 | from selenium import webdriver 3 | import time 4 | import re 5 | 6 | #打开浏览器 7 | driver = webdriver.Chrome() 8 | 9 | #登录账户 10 | def log_in(username, password): 11 | #进入页面并暂停 12 | driver.get('https://passport.weibo.cn/signin/login') 13 | time.sleep(3) 14 | 15 | #输入账户密码,点击登录 16 | driver.find_element_by_id("loginName").send_keys(username) 17 | driver.find_element_by_id("loginPassword").send_keys(password) 18 | driver.find_element_by_id("loginAction").click() 19 | time.sleep(3) 20 | #查看cookie 21 | cookies = driver.get_cookies() 22 | cookie_list = [] 23 | #把cookie循环写入到cookie_list 24 | for dict in cookies: 25 | cookie=dict['name'] + '=' + dict['value'] 26 | cookie_list.append(cookie) 27 | cookie=';'.join(cookie_list) 28 | print(cookie) 29 | 30 | 31 | def user_info(user_id): 32 | string='http://weibo.cn/' + user_id 33 | driver.get(string) 34 | print('********************') 35 | print('用户资料') 36 | 37 | #用户ID 38 | string_id='用户id:' + user_id 39 | print(string_id) 40 | 41 | #用户资料 42 | str_list=driver.find_element_by_xpath("//div[@class='ut']").text.split(' ') 43 | string_name='昵称:'+str_list[0] 44 | print(string_name) 45 | 46 | # 3.微博数、粉丝数、关注数 47 | string_num=driver.find_element_by_xpath("//div[@class='tip2']") 48 | pattern=r"\d+\.?\d*" # 匹配数字,包含整数和小数 49 | result=re.findall(pattern, string_num.text) 50 | print(string_num.text) 51 | print("微博数:" + str(result[0])) 52 | print("关注数:" + str(result[1])) 53 | print("粉丝数:" + str(result[2])) 54 | print('\n********************') 55 | # 4.将用户信息写到文件里 56 | ''' 57 | with open("userinfo.txt", "w", encoding = "gb18030") as file: 58 | file.write("用户ID:" + user_id + '\r\n') 59 | file.write("昵称:" + nickname + '\r\n') 60 | file.write("微博数:" + str(result[0]) + '\r\n') 61 | file.write("关注数:" + str(result[1]) + '\r\n') 62 | file.write("粉丝数:" + str(result[2]) + '\r\n')''' 63 | 64 | 65 | def user_message(user_id): 66 | page_list_1 = driver.find_element_by_xpath("//div[@class='pa']") 67 | print(page_list_1.text) 68 | page_list_2 = re.findall(r"\d+\d*",page_list_1.text) 69 | #总共有多少页微博 70 | total_page = page_list_2[1] 71 | print("页数:"+total_page) 72 | #第几页 73 | page_num=1 74 | #当前页的第几条微博内容 75 | curr_msg=1 76 | #全部微博中的第几条微博 77 | curr_msg_in_all = 0 78 | content_path="//div[@class='c'][{0}]" 79 | while(page_num <= int(total_page)): 80 | try: 81 | conten_url = "http://weibo.cn/" + user_id + "?page=" + str(page_num) 82 | driver.get(conten_url) 83 | content = driver.find_element_by_xpath(content_path.format(curr_msg)).text 84 | #print("\n" + content) # 微博内容,包含原创和转发 85 | if "设置:皮肤.图片.条数.隐私" not in content: 86 | curr_msg += 1 87 | curr_msg_in_all += 1 88 | temp=str(curr_msg_in_all)+content 89 | print(temp) 90 | 91 | else: 92 | page_num += 1 93 | curr_msg = 1 94 | time.sleep(20) 95 | except exception as e: 96 | print("curr_msg_in_all:" + curr_msg_in_all) 97 | print(e) 98 | finally: 99 | pass 100 | print("finish!") 101 | 102 | if __name__ == '__main__': 103 | #输入微博账号 104 | username = '15037168088' 105 | #输入密码 106 | password = 'qscrgn123' 107 | #登录 108 | log_in(username, password) 109 | 110 | time.sleep(3) 111 | #部分域名 112 | uid='guangxianliuyan' 113 | #获取用户基本信息 114 | user_info(uid) 115 | #获取微博内容 116 | user_message(uid) 117 | -------------------------------------------------------------------------------- /代码/第十七章/17.3.py: -------------------------------------------------------------------------------- 1 | fread=open('weibocontent.txt') 2 | fwrite=open('weibocontent2.txt', 'w') 3 | 4 | try: 5 | for line in fread: 6 | text = line.strip() 7 | if("" == text): 8 | continue 9 | if( 5 >= len(text)): #一般来说都是四位数 10 | continue 11 | if(-1 != text.find("转发理由")): 12 | continue 13 | if(-1 != text.find("原图")): 14 | continue 15 | 16 | string_1 = 0 17 | if("发布了" in text or "转发了" in text): 18 | if(-1 != text.find(":")): 19 | string_1 = text.find(":") + 1 20 | elif(-1 != text.find(":")): 21 | string_1 = text.find(":") + 1 22 | string_2 = len(text) 23 | if(-1 != text.find("http")): 24 | string_2 = text.find("http") 25 | elif(-1 != text.find("全文")): 26 | string_2 = text.find("全文") 27 | elif (-1 != text.find("赞")): 28 | string_2 = text.find("赞") 29 | elif(-1 != text.find("[组图共")): 30 | string_2 = text.find("[组图共") 31 | 32 | content = text[string_1 : string_2] 33 | fwrite.write(content + '\r\n') 34 | finally: 35 | fread.close() 36 | fwrite.close() -------------------------------------------------------------------------------- /代码/第十五章/tk1.py: -------------------------------------------------------------------------------- 1 | import tkinter as tk 2 | 3 | root=tk.Tk() 4 | root.title("selenium 自动化爬虫") 5 | text=tk.Label(root,text="a simple tkinter GUI") 6 | text.pack() 7 | root.mainloop() -------------------------------------------------------------------------------- /代码/第十五章/tk10.py: -------------------------------------------------------------------------------- 1 | 2 | #导入库 3 | from tkinter import * 4 | 5 | #创建主窗口和标题 6 | root=Tk() 7 | root.title("selenium自动化爬虫") 8 | 9 | text=Text(root,width=36,height=2) 10 | text.pack() 11 | 12 | text.insert(END,"selenium自动化爬虫") 13 | text.tag_config("tag1",background="blue") 14 | text.tag_add("tag1","1.0","1.end") 15 | 16 | #窗体循环 17 | mainloop() 18 | -------------------------------------------------------------------------------- /代码/第十五章/tk11.py: -------------------------------------------------------------------------------- 1 | #导入库 2 | from tkinter import * 3 | 4 | #创建主窗口和标题 5 | root=Tk() 6 | root.title("selenium自动化爬虫") 7 | 8 | #Text控件 9 | text=Text(root,width=36,height=2) 10 | text.pack() 11 | 12 | #插入字符 13 | text.insert(END,"selenium自动化爬虫") 14 | 15 | #设置 16 | text.mark_set('mark1', '1.10') #第一行第三列做一个标记 17 | text.mark_unset('mark1') 18 | text.insert('mark1', 'MARK') #利用标记插入字符串 19 | text.tag_config("tag1",background="BLACK",foreground="WHITE") 20 | text.tag_add("tag1","1.10","1.14") 21 | 22 | 23 | #窗体循环 24 | mainloop() 25 | -------------------------------------------------------------------------------- /代码/第十五章/tk12.py: -------------------------------------------------------------------------------- 1 | #导入库 2 | from tkinter import * 3 | 4 | #创建主窗口和标题 5 | root=Tk() 6 | root.title("selenium自动化爬虫") 7 | 8 | 9 | #Text控件 10 | canvas=Canvas(root,width=500,height=300) 11 | canvas.pack() 12 | 13 | def track(motion): 14 | x1=motion.x-0.1 15 | x2=motion.x+0.1 16 | y1=motion.y-0.1 17 | y2=motion.y+0.1 18 | 19 | canvas.create_oval(x1,y1,x2,y2,fill="black") 20 | 21 | canvas.bind("",track) 22 | 23 | 24 | #窗体循环 25 | mainloop() 26 | -------------------------------------------------------------------------------- /代码/第十五章/tk13.py: -------------------------------------------------------------------------------- 1 | #导入库 2 | from tkinter import * 3 | 4 | #创建主窗口和标题 5 | root=Tk() 6 | root.title("selenium自动化爬虫") 7 | 8 | def action(): 9 | pass 10 | 11 | menubar=Menu(root) 12 | 13 | menu1=Menu(menubar,tearoff=0) 14 | menu1.add_command(label="新建文件",command=action) 15 | menu1.add_command(label="打开文件",command=action) 16 | menu1.add_command(label="打开文件夹",command=action) 17 | menubar.add_cascade(label="菜单",menu=menu1) 18 | 19 | 20 | menu2=Menu(menubar,tearoff=0) 21 | menu2.add_command(label="撤销",command=action) 22 | menu2.add_command(label="重做",command=action) 23 | menubar.add_cascade(label="编辑",menu=menu2) 24 | 25 | root.config(menu=menubar) 26 | 27 | #窗体循环 28 | mainloop() 29 | -------------------------------------------------------------------------------- /代码/第十五章/tk14.py: -------------------------------------------------------------------------------- 1 | #导入库 2 | from tkinter import * 3 | 4 | #创建主窗口和标题 5 | root=Tk() 6 | root.title("selenium自动化爬虫") 7 | 8 | #定义变量 9 | variable=StringVar() 10 | #设置默认值 11 | #variable.set("test1") 12 | 13 | optionmenu=OptionMenu(root,variable,"test1","test2","test3") 14 | optionmenu.grid(row=0,column=0) 15 | 16 | #窗体循环 17 | mainloop() 18 | -------------------------------------------------------------------------------- /代码/第十五章/tk15.py: -------------------------------------------------------------------------------- 1 | #导入库 2 | from tkinter import * 3 | 4 | #创建主窗口和标题 5 | root=Tk() 6 | root.title("selenium自动化爬虫") 7 | 8 | option=["test1","test2","test3","test4"] 9 | spinbox=Spinbox(root) 10 | spinbox.pack() 11 | 12 | #窗体循环 13 | mainloop() 14 | -------------------------------------------------------------------------------- /代码/第十五章/tk16.py: -------------------------------------------------------------------------------- 1 | 2 | from tkinter.messagebox import * 3 | 4 | askokcancel("title","content",parent="w") 5 | ''' 6 | askyesno("title","content") 7 | askquestion("title","content") 8 | askretrycancel("title","content") 9 | showerror("title","content") 10 | showinfo("title","content") 11 | showwarning("title","content") 12 | ''' 13 | 14 | -------------------------------------------------------------------------------- /代码/第十五章/tk17.py: -------------------------------------------------------------------------------- 1 | #导入库 2 | from tkinter import * 3 | from tkinter.filedialog import * 4 | 5 | #创建主窗口和标题 6 | root=Tk() 7 | root.title("selenium自动化爬虫") 8 | 9 | def choose(): 10 | file_path=askopenfilename() 11 | print(file_path) 12 | 13 | button=Button(root,text="choose file",command=choose) 14 | button.pack() 15 | 16 | #窗体循环 17 | mainloop() 18 | -------------------------------------------------------------------------------- /代码/第十五章/tk18.py: -------------------------------------------------------------------------------- 1 | #导入库 2 | from tkinter import * 3 | from tkinter.filedialog import * 4 | 5 | #创建主窗口和标题 6 | root=Tk() 7 | root.title("selenium自动化爬虫") 8 | 9 | def choose(): 10 | file_path=askopenfilename(filetypes=(('PNG', '.png'), ('JPG', '.jpg'), ('GIF', '.gif'))) 11 | print(file_path) 12 | 13 | button=Button(root,text="choose file",command=choose) 14 | button.pack() 15 | 16 | #窗体循环 17 | mainloop() 18 | -------------------------------------------------------------------------------- /代码/第十五章/tk19.py: -------------------------------------------------------------------------------- 1 | #导入库 2 | from tkinter import * 3 | 4 | 5 | #创建主窗口和标题 6 | root=Tk() 7 | root.title("selenium自动化爬虫") 8 | 9 | label=Label(text="in long long long long long long ago") 10 | label.pack() 11 | message=Message(text="in long long long long long long ago") 12 | message.pack() 13 | #窗体循环 14 | mainloop() 15 | -------------------------------------------------------------------------------- /代码/第十五章/tk2.py: -------------------------------------------------------------------------------- 1 | #导入库 2 | import tkinter as tk 3 | 4 | #实例化对象 5 | root=tk.Tk() 6 | #设置标题 7 | root.title("selenium 自动化爬虫") 8 | 9 | #简单的函数 10 | def hello_world(): 11 | print("hello_world") 12 | 13 | #创建按钮并居中 14 | button=tk.Button(root,text="i'm a button",fg="blue",command=hello_world) 15 | button.pack(fill=X) 16 | 17 | #程序循环 18 | root.mainloop() 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /代码/第十五章/tk3.py: -------------------------------------------------------------------------------- 1 | import tkinter as tk 2 | 3 | class Application(tk.Frame): 4 | def __init__(self, master=None): 5 | super().__init__(master) 6 | self.pack() 7 | self.create_widgets() 8 | 9 | def create_widgets(self): 10 | self.say_hi = tk.Button(self,text="click me to say\nHello World",command=self.say_hi) 11 | #self.say_hi["text"] = "Hello World\n(click me)" 12 | #self.say_hi["command"] = self.say_hi 13 | self.say_hi.pack(side="top",pady=10) 14 | 15 | self.quit = tk.Button(self, text="退出", fg="blue", 16 | command=root.destroy) 17 | self.quit.pack(side="bottom") 18 | 19 | def say_hi(self): 20 | print("hello_world") 21 | 22 | 23 | #实例化对象 24 | root=tk.Tk() 25 | #设置标题 26 | root.title("selenium 自动化爬虫") 27 | 28 | #类的继承 29 | app = Application(master=root) 30 | #程序循环 31 | app.mainloop() -------------------------------------------------------------------------------- /代码/第十五章/tk4.py: -------------------------------------------------------------------------------- 1 | from tkinter import * 2 | 3 | root=Tk() 4 | root.title("selenium自动化爬虫") 5 | 6 | test_dic=["test1","test2","test3","test4"] 7 | variable=[] 8 | 9 | for i in test_dic: 10 | variable.append(IntVar()) 11 | 12 | checkbutton=Checkbutton(root,text=i,variable=variable[-1]) 13 | checkbutton.pack(anchor=W) 14 | 15 | label=Label(root,textvariable=variable[-1]) 16 | label.pack() 17 | mainloop() -------------------------------------------------------------------------------- /代码/第十五章/tk5.py: -------------------------------------------------------------------------------- 1 | from tkinter import * 2 | 3 | root=Tk() 4 | root.title("selenium自动化爬虫") 5 | 6 | test_dic=["test1","test2","test3","test4"] 7 | variable=IntVar() 8 | 9 | counter=0 10 | for i in test_dic: 11 | counter+=1 12 | checkbutton=Radiobutton(root,text=i,variable=variable,value=counter,indicatoron=False) 13 | checkbutton.pack(fill=X) 14 | mainloop() -------------------------------------------------------------------------------- /代码/第十五章/tk6.py: -------------------------------------------------------------------------------- 1 | from tkinter import * 2 | 3 | 4 | root=Tk() 5 | root.title("selenium自动化爬虫") 6 | 7 | test_dic=["test1","test2","test3","test4"] 8 | variable=IntVar() 9 | 10 | labelframe1= LabelFrame(root,text = 'choose one',padx = 5,pady = 5) 11 | labelframe1.pack(padx = 10,pady = 10) 12 | 13 | counter=0 14 | for i in test_dic: 15 | counter+=1 16 | checkbutton=Radiobutton(labelframe1,text=i,variable=variable,value=counter,indicatoron=False) 17 | checkbutton.pack(fill=X) 18 | 19 | 20 | mainloop() -------------------------------------------------------------------------------- /代码/第十五章/tk7.py: -------------------------------------------------------------------------------- 1 | 2 | #导入库 3 | from tkinter import * 4 | 5 | #创建主窗口和标题 6 | root=Tk() 7 | root.title("selenium自动化爬虫") 8 | 9 | def check(): 10 | ID=entry1.get() 11 | password=entry2.get() 12 | 13 | checkID="1234567890" 14 | checkpassword="1234567890" 15 | if ID==checkID and password==checkpassword: 16 | print("you have logged in ") 17 | return True 18 | else: 19 | print("password error") 20 | return False 21 | 22 | def check2(): 23 | print("error") 24 | return True 25 | #创建控件框架 26 | labelframe1= LabelFrame(root,text ="登录框",padx = 5,pady = 5) 27 | labelframe1.pack(padx = 10,pady = 10) 28 | 29 | #输入框前面的文字部分 30 | Label1=Label(labelframe1,text="账号") 31 | #使用grid()方式进行布局 32 | Label1.grid(row=0,column=0,padx=5,pady=5) 33 | 34 | Label2=Label(labelframe1,text="密码") 35 | Label2.grid(row=1,column=0,padx=5,pady=5) 36 | 37 | #输入框 38 | entry1=Entry(labelframe1) 39 | #使用grid()方式进行布局 40 | entry1.grid(row=0,column=1,padx=5,pady=5) 41 | entry2=Entry(labelframe1,show="*",validate="focusout",validatecommand=check,invalidcommand=check2) 42 | entry2.grid(row=1,column=1,padx=5,pady=5) 43 | 44 | entry1.insert(0,"1234567890") 45 | 46 | button=Button(root,text="登录",command=check) 47 | button.pack(padx=5,pady=5) 48 | 49 | mainloop() 50 | -------------------------------------------------------------------------------- /代码/第十五章/tk8.py: -------------------------------------------------------------------------------- 1 | 2 | #导入库 3 | from tkinter import * 4 | 5 | #创建主窗口和标题 6 | root=Tk() 7 | root.title("selenium自动化爬虫") 8 | 9 | 10 | labelframe= LabelFrame(root,text='Listbox',padx=5,pady=5) 11 | labelframe.pack(padx=10,pady=10) 12 | 13 | 14 | #定义scrollbar的属性和窗体 15 | scrollbar=Scrollbar(labelframe) 16 | scrollbar.pack(side=RIGHT,fill=Y) 17 | 18 | #将Y轴控制设置为scrollbar 19 | listbox=Listbox(labelframe,selectmode=SINGLE,yscrollcommand=scrollbar.set) 20 | listbox.pack(side=LEFT,fill=BOTH) 21 | 22 | dic=[] 23 | for i in range(0,100): 24 | dic.append("text{}".format(i)) 25 | for i in dic: 26 | listbox.insert(END,i) 27 | 28 | #负责实现拖动滚动条后窗体内容的改变 29 | scrollbar.config(command=listbox.yview) 30 | 31 | def delete(): 32 | listbox.delete(ACTIVE) 33 | 34 | button=Button(root,text="DELETE",command=delete) 35 | button.pack(padx=5,pady=5) 36 | 37 | mainloop() 38 | -------------------------------------------------------------------------------- /代码/第十五章/tk9.py: -------------------------------------------------------------------------------- 1 | 2 | #导入库 3 | from tkinter import * 4 | 5 | #创建主窗口和标题 6 | root=Tk() 7 | root.title("selenium自动化爬虫") 8 | 9 | text=Text(root,width=36,height=2) 10 | text.pack() 11 | 12 | text.insert(END,"selenium自动化爬虫") 13 | 14 | get_text=text.get("1.0","1.end") 15 | text.insert(END,"\n") 16 | text.insert(END,get_text) 17 | text.delete("2.0",END) 18 | #窗体循环 19 | mainloop() 20 | -------------------------------------------------------------------------------- /代码/第十六章/16-2.py: -------------------------------------------------------------------------------- 1 | # 对于动态加载的网页,例如知乎,需要使用Selenium+ChromeDriver(或PhantomJS) 2 | from bs4 import BeautifulSoup 3 | from selenium import webdriver 4 | #from selenium.webdriver.common.keys import Keys 5 | import time 6 | 7 | # 让界面滚动的函数 -- 8 | def scroll(driver): 9 | driver.execute_script(""" 10 | (function () { 11 | var y = document.body.scrollTop; 12 | var step = 100; 13 | window.scroll(0, y); 14 | function f() { 15 | if (y < document.body.scrollHeight) { 16 | y += step; 17 | window.scroll(0, y); 18 | setTimeout(f, 50); 19 | } 20 | else { 21 | window.scroll(0, y); 22 | document.title += "scroll-done"; 23 | } 24 | } 25 | setTimeout(f, 1000); 26 | })(); 27 | """) 28 | 29 | def func(): 30 | for story in storys : 31 | nameLabel = story.find('meta',itemprop="name") 32 | name=nameLabel["content"] 33 | storyText=story.find('div',class_="RichContent-inner") 34 | #打印看标签内容到底是什么 35 | try: 36 | string=name+'--------'+storyText.text+'\n' 37 | f.write(string) 38 | print('answer By '+str(name)+' has been finished') 39 | except Exception: 40 | print('Something is wrong while writing to txt') 41 | if __name__ == '__main__': 42 | url='https://www.zhihu.com/question/54732849' 43 | driver = webdriver.Chrome() 44 | driver.get(url) 45 | scroll(driver) 46 | time.sleep(5) 47 | html = driver.page_source 48 | soup = BeautifulSoup(html,'lxml') 49 | storys = soup.find_all('div',class_="List-item") 50 | f=open('tmp.txt','w+') 51 | func() 52 | f.close() 53 | print('That is all') -------------------------------------------------------------------------------- /代码/第十六章/16-3.py: -------------------------------------------------------------------------------- 1 | import requests 2 | from requests.exceptions import MissingSchema 3 | from bs4 import BeautifulSoup 4 | from selenium import webdriver 5 | from selenium.common.exceptions import NoSuchElementException 6 | from selenium.webdriver.common.action_chains import ActionChains 7 | import os 8 | import time 9 | 10 | class func: 11 | 12 | # 初始化 13 | def __init__(self): 14 | pass 15 | # 让界面滚动到底部的函数 16 | def scroll(self,driver): 17 | driver.execute_script(""" 18 | (function () { 19 | var y = document.body.scrollTop; 20 | var step = 100; 21 | window.scroll(0, y); 22 | 23 | 24 | function f() { 25 | if (y < document.body.scrollHeight) { 26 | y += step; 27 | window.scroll(0, y); 28 | setTimeout(f, 50); 29 | } 30 | else { 31 | window.scroll(0, y); 32 | document.title += "scroll-done"; 33 | } 34 | } 35 | setTimeout(f, 1000); 36 | })(); 37 | """) 38 | 39 | # 开始爬取 40 | def beginSpider(self,url): 41 | # 1. 前期工作 42 | driver = webdriver.Chrome() 43 | driver.get(url) 44 | 45 | try: 46 | # 首先加载出全部的内容,判断是否页面中存在“更多”这一个按钮 47 | while True: 48 | # 这里需要注意的是:selenium2 是不支持 类名之中 有空格的 49 | try: 50 | self.scroll(driver) 51 | time.sleep(30) 52 | more = driver.find_element_by_css_selector \ 53 | ("div.Card:nth-child(4) > a:nth-child(1)") 54 | actions=ActionChains(driver) 55 | actions.move_to_element(more) 56 | actions.click(more) 57 | actions.perform() 58 | # more.click() # 如果我们在页面中找到了更多,那么就点击更多,然后等两秒 59 | except NoSuchElementException as e: 60 | break 61 | # 加载了全部的内容后,获取到所有内容,存为items 62 | soup = BeautifulSoup(driver.page_source,"html.parser") 63 | # 2. 对soup进行操作,获取出title,和包含内容的列表items 64 | titles = soup.find("title").text.replace('\n', '').replace('?', '').split() 65 | title = titles[0] 66 | print(title) 67 | # 如果当前目录下没有title命名的文件夹,则创建一个 68 | dirpath = os.getcwd() + "\\" + title + "\\" 69 | if not os.path.exists(dirpath): 70 | os.makedirs(dirpath) 71 | 72 | items = soup.find_all("div", class_="List-item") 73 | nimingCount = 0 74 | for item in items: 75 | # 分为两种情况:1.匿名用户,没有第一张头像 2. 匿名用户有第一张头像 76 | userName = item.find('img', class_="Avatar AuthorInfo-avatar").get("alt") 77 | if "匿名" in userName: 78 | userName = "匿名用户_" + str(nimingCount) 79 | nimingCount += 1 80 | count = 0 # 一个用户下有多个照片的 81 | images = item.find_all('img',class_ = "origin_image zh-lightbox-thumb lazy") 82 | 83 | for image in images: 84 | # 保存图片 85 | imageSrc = image.get("src") 86 | picName = dirpath + userName + '_' + str(count) + ".jpg" 87 | count += 1 88 | 89 | try: 90 | imageData = requests.get(imageSrc, stream=True).content 91 | try: 92 | with open(picName, 'wb') as jpg: 93 | jpg.write(imageData) 94 | except IOError as e: 95 | print(userName + "的一张图片写入错误") 96 | except MissingSchema as e: 97 | print(userName + "的一张图片获取失败") 98 | print("地址为:" + imageSrc) 99 | finally: 100 | # 最后要记得关闭浏览器,否则就会永远开着 101 | driver.quit() 102 | 103 | if __name__ == '__main__': 104 | f = func() 105 | f.beginSpider("https://www.zhihu.com/question/36950102/answer/89597362") -------------------------------------------------------------------------------- /代码/第十四章/2to3/py2.py: -------------------------------------------------------------------------------- 1 | print("hello world") 2 | -------------------------------------------------------------------------------- /代码/第十四章/2to3/py2.py.bak: -------------------------------------------------------------------------------- 1 | print "hello world" 2 | -------------------------------------------------------------------------------- /代码/第十四章/2to3/test.py: -------------------------------------------------------------------------------- 1 | #! python2 2 | import sys 3 | sys.stdout.write("Hello World!\n") 4 | -------------------------------------------------------------------------------- /代码/第十章/assert.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | 3 | class calc(unittest.TestCase): 4 | def setUp(self): 5 | print("part of unittest start") 6 | def tearDown(self): 7 | print("part of unittest end") 8 | def test_add(self): 9 | result=1+1 10 | self.assertEqual(2,result) 11 | def test_minus(self): 12 | result=2-1 13 | self.assertEqual(1,result) 14 | def test_wrong_minus(self): 15 | result=2-1 16 | self.assertEqual(2,result) 17 | def main(): 18 | unittest.main() 19 | 20 | if __name__ == '__main__': 21 | main() -------------------------------------------------------------------------------- /代码/第十章/book_unittest.py: -------------------------------------------------------------------------------- 1 | from library_book import book 2 | import unittest 3 | 4 | class book_test(unittest.TestCase): 5 | global instance 6 | instance=book(name="Harry Potter",page=350) 7 | 8 | def test_init(self): 9 | self.assertEqual(instance.name,"Harry Potter") 10 | self.assertEqual(instance.page,350) 11 | self.assertTrue(isinstance(instance, dict)) 12 | 13 | def test_key(self): 14 | instance.key1='value1' 15 | self.assertTrue('key1' in instance) 16 | self.assertEqual(instance.key1, 'value1') 17 | 18 | def test_attr_add(self): 19 | instance["key2"]="value2" 20 | self.assertTrue('key2' in instance) 21 | self.assertEqual(instance.key2, 'value2') 22 | 23 | def test_keyerror(self): 24 | with self.assertRaises(KeyError): 25 | instance['empty'] 26 | 27 | def test_attrerror(self): 28 | with self.assertRaises(AttributeError): 29 | instance.empty 30 | def main(): 31 | unittest.main() 32 | 33 | if __name__ == '__main__': 34 | main() -------------------------------------------------------------------------------- /代码/第十章/htmltestrunner.py: -------------------------------------------------------------------------------- 1 | import HTMLTestRunner 2 | import unittest 3 | import os,time 4 | 5 | 6 | listaa = "E:\\selenium_python\\test_case" 7 | def createsuite1(): 8 | testunit=unittest.TestSuite() 9 | discover=unittest.defaultTestLoader.discover(listaa,pattern='start_*.py',top_level_dir=None) 10 | for test_suite in discover: 11 | for test_case in test_suite: 12 | testunit.addTests(test_case) 13 | print(testunit) 14 | return testunit 15 | 16 | now = time.strftime("%Y-%m-%d %H_%M_%S",time.localtime()) 17 | filename="E:\\result.html" 18 | 19 | fp=open(filename,'wb') 20 | 21 | runner=HTMLTestRunner.HTMLTestRunner( 22 | stream=fp, 23 | title=u'搜索功能测试报告', 24 | description=u'用例执行情况:') 25 | 26 | runner.run(createsuite1()) 27 | 28 | #关闭文件流,不关的话生成的报告是空的 29 | fp.close() 30 | -------------------------------------------------------------------------------- /代码/第十章/library_book.py: -------------------------------------------------------------------------------- 1 | 2 | class book(dict): 3 | def __init__(self, **kw): 4 | super().__init__(**kw) 5 | 6 | def __getattr__(self, key): 7 | try: 8 | return self[key] 9 | except KeyError: 10 | raise AttributeError(r"Dict object has no attribute '%s'" % key) 11 | 12 | def __setattr__(self, key, value): 13 | self[key] = value 14 | 15 | def get_page(self): 16 | if self.page <= 60: 17 | return "短篇" 18 | elif self.page <= 150: 19 | return "中篇" 20 | elif self.page > 150: 21 | return "长篇" -------------------------------------------------------------------------------- /代码/第十章/selenium_unittest.py: -------------------------------------------------------------------------------- 1 | dic= {'Michael': 95, 'Bob': 75, 'Tracy': 85} 2 | try: 3 | d=dic['test'] 4 | except KeyError as e: 5 | print(e) 6 | print("print") -------------------------------------------------------------------------------- /代码/第十章/test.py: -------------------------------------------------------------------------------- 1 | import HTMLTestRunner 2 | import unittest 3 | 4 | directory=r"C:\Users\xuyichenmo\OneDrive\Documents\SELENIUM\第十章" 5 | 6 | def createsuite(): 7 | test_suit=unittest.TestSuite() 8 | discover=unittest.defaultTestLoader.discover(directory,pattern='book_unittest.py',top_level_dir=None) 9 | counter=0 10 | print(discover) 11 | for i in discover: 12 | counter+=1 13 | print("已发现{}个测试实例需要执行".format(counter)) 14 | for j in i: 15 | test_suit.addTests(j) 16 | return test_suit 17 | 18 | def main(): 19 | 20 | filename="E:\\result.html" 21 | f=open(filename,'wb') 22 | runner=HTMLTestRunner.HTMLTestRunner(stream=f,title='测试报告',description='实例执行情况:') 23 | runner.run(createsuite()) 24 | f.close() 25 | 26 | if __name__ == '__main__': 27 | main() 28 | -------------------------------------------------------------------------------- /代码/第四章/1.py: -------------------------------------------------------------------------------- 1 | # 导入 webdriver 2 | from selenium import webdriver 3 | import time 4 | 5 | # 要想调用键盘按键操作需要引入keys包 6 | from selenium.webdriver.common.keys import Keys 7 | 8 | # 调用环境变量指定的PhantomJS浏览器创建浏览器对象 9 | driver = webdriver.PhantomJS() 10 | 11 | # get方法会一直等到页面被完全加载,然后才会继续程序,通常测试会在这里选择 time.sleep(2) 12 | driver.get("http://cn.bing.com/") 13 | 14 | #打印页面标题 15 | title_=driver.title 16 | print(title_) 17 | 18 | # id="sb_form_q"是bing搜索输入框,输入字符串"SELENIUM自动化测试" 19 | keywords = 'SELENIUM自动化测试' 20 | driver.find_element_by_id("sb_form_q").send_keys(keywords) 21 | 22 | # 生成当前页面快照并保存 23 | driver.save_screenshot("bing_1.png") 24 | 25 | #点击搜索按钮 26 | driver.find_element_by_id("sb_form_go").click() 27 | 28 | # 生成当前页面快照并保存 29 | driver.save_screenshot("bing_2.png") 30 | 31 | # 进行当前页面点击第一项 32 | driver.find_element_by_xpath("/html/body/div/ol/li/h2/a").click() 33 | 34 | # 生成当前页面快照并保存,在这里由于没有页面重定位,仍停留在这个页面 35 | driver.save_screenshot("bing_3.png") 36 | 37 | # 关闭浏览器 38 | driver,quit() 39 | -------------------------------------------------------------------------------- /图片/第一章/1-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第一章/1-1.png -------------------------------------------------------------------------------- /图片/第一章/1-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第一章/1-2.png -------------------------------------------------------------------------------- /图片/第一章/1-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第一章/1-3.png -------------------------------------------------------------------------------- /图片/第一章/1-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第一章/1-4.png -------------------------------------------------------------------------------- /图片/第一章/1-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第一章/1-5.png -------------------------------------------------------------------------------- /图片/第一章/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第一章/1.png -------------------------------------------------------------------------------- /图片/第七章/7.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第七章/7.1.png -------------------------------------------------------------------------------- /图片/第七章/7.10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第七章/7.10.png -------------------------------------------------------------------------------- /图片/第七章/7.11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第七章/7.11.png -------------------------------------------------------------------------------- /图片/第七章/7.12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第七章/7.12.png -------------------------------------------------------------------------------- /图片/第七章/7.13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第七章/7.13.png -------------------------------------------------------------------------------- /图片/第七章/7.14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第七章/7.14.png -------------------------------------------------------------------------------- /图片/第七章/7.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第七章/7.2.png -------------------------------------------------------------------------------- /图片/第七章/7.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第七章/7.3.png -------------------------------------------------------------------------------- /图片/第七章/7.4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第七章/7.4.png -------------------------------------------------------------------------------- /图片/第七章/7.5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第七章/7.5.png -------------------------------------------------------------------------------- /图片/第七章/7.6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第七章/7.6.png -------------------------------------------------------------------------------- /图片/第七章/7.7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第七章/7.7.png -------------------------------------------------------------------------------- /图片/第七章/7.8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第七章/7.8.png -------------------------------------------------------------------------------- /图片/第七章/7.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第七章/7.9.png -------------------------------------------------------------------------------- /图片/第三章/3.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第三章/3.1.png -------------------------------------------------------------------------------- /图片/第三章/3.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第三章/3.2.png -------------------------------------------------------------------------------- /图片/第三章/3.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第三章/3.3.png -------------------------------------------------------------------------------- /图片/第三章/3.4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第三章/3.4.png -------------------------------------------------------------------------------- /图片/第三章/3.5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第三章/3.5.png -------------------------------------------------------------------------------- /图片/第三章/3.6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第三章/3.6.png -------------------------------------------------------------------------------- /图片/第九章/9.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第九章/9.1.png -------------------------------------------------------------------------------- /图片/第九章/9.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第九章/9.2.png -------------------------------------------------------------------------------- /图片/第九章/9.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第九章/9.3.png -------------------------------------------------------------------------------- /图片/第九章/备用.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第九章/备用.png -------------------------------------------------------------------------------- /图片/第二章/2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第二章/2-1.png -------------------------------------------------------------------------------- /图片/第二章/2-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第二章/2-2.png -------------------------------------------------------------------------------- /图片/第二章/2-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第二章/2-3.png -------------------------------------------------------------------------------- /图片/第二章/2-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第二章/2-4.png -------------------------------------------------------------------------------- /图片/第二章/2-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第二章/2-5.png -------------------------------------------------------------------------------- /图片/第二章/2-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第二章/2-6.png -------------------------------------------------------------------------------- /图片/第五章/5.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第五章/5.1.png -------------------------------------------------------------------------------- /图片/第五章/5.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第五章/5.2.png -------------------------------------------------------------------------------- /图片/第八章/8.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第八章/8.1.png -------------------------------------------------------------------------------- /图片/第八章/8.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第八章/8.2.png -------------------------------------------------------------------------------- /图片/第八章/8.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第八章/8.3.png -------------------------------------------------------------------------------- /图片/第八章/8.4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第八章/8.4.png -------------------------------------------------------------------------------- /图片/第八章/8.5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第八章/8.5.png -------------------------------------------------------------------------------- /图片/第六章/6.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第六章/6.1.png -------------------------------------------------------------------------------- /图片/第六章/6.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第六章/6.2.png -------------------------------------------------------------------------------- /图片/第六章/6.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第六章/6.3.png -------------------------------------------------------------------------------- /图片/第六章/6.4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第六章/6.4.png -------------------------------------------------------------------------------- /图片/第十七章/17-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十七章/17-1.png -------------------------------------------------------------------------------- /图片/第十七章/17-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十七章/17-2.png -------------------------------------------------------------------------------- /图片/第十七章/17-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十七章/17-3.png -------------------------------------------------------------------------------- /图片/第十七章/17-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十七章/17-4.png -------------------------------------------------------------------------------- /图片/第十七章/17-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十七章/17-5.png -------------------------------------------------------------------------------- /图片/第十三章/13.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.1.png -------------------------------------------------------------------------------- /图片/第十三章/13.10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.10.png -------------------------------------------------------------------------------- /图片/第十三章/13.11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.11.png -------------------------------------------------------------------------------- /图片/第十三章/13.12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.12.png -------------------------------------------------------------------------------- /图片/第十三章/13.13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.13.png -------------------------------------------------------------------------------- /图片/第十三章/13.14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.14.png -------------------------------------------------------------------------------- /图片/第十三章/13.15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.15.png -------------------------------------------------------------------------------- /图片/第十三章/13.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.16.png -------------------------------------------------------------------------------- /图片/第十三章/13.17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.17.png -------------------------------------------------------------------------------- /图片/第十三章/13.18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.18.png -------------------------------------------------------------------------------- /图片/第十三章/13.19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.19.png -------------------------------------------------------------------------------- /图片/第十三章/13.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.2.png -------------------------------------------------------------------------------- /图片/第十三章/13.20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.20.png -------------------------------------------------------------------------------- /图片/第十三章/13.21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.21.png -------------------------------------------------------------------------------- /图片/第十三章/13.22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.22.png -------------------------------------------------------------------------------- /图片/第十三章/13.23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.23.png -------------------------------------------------------------------------------- /图片/第十三章/13.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.3.png -------------------------------------------------------------------------------- /图片/第十三章/13.4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.4.png -------------------------------------------------------------------------------- /图片/第十三章/13.5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.5.png -------------------------------------------------------------------------------- /图片/第十三章/13.6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.6.png -------------------------------------------------------------------------------- /图片/第十三章/13.7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.7.png -------------------------------------------------------------------------------- /图片/第十三章/13.8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.8.png -------------------------------------------------------------------------------- /图片/第十三章/13.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十三章/13.9.png -------------------------------------------------------------------------------- /图片/第十二章/12.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十二章/12.1.png -------------------------------------------------------------------------------- /图片/第十二章/12.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十二章/12.2.png -------------------------------------------------------------------------------- /图片/第十二章/12.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十二章/12.3.png -------------------------------------------------------------------------------- /图片/第十二章/12.4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十二章/12.4.png -------------------------------------------------------------------------------- /图片/第十二章/12.6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十二章/12.6.png -------------------------------------------------------------------------------- /图片/第十二章/12.7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十二章/12.7.png -------------------------------------------------------------------------------- /图片/第十二章/备用.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十二章/备用.png -------------------------------------------------------------------------------- /图片/第十五章/15.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.1.png -------------------------------------------------------------------------------- /图片/第十五章/15.10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.10.png -------------------------------------------------------------------------------- /图片/第十五章/15.11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.11.png -------------------------------------------------------------------------------- /图片/第十五章/15.12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.12.png -------------------------------------------------------------------------------- /图片/第十五章/15.13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.13.png -------------------------------------------------------------------------------- /图片/第十五章/15.14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.14.png -------------------------------------------------------------------------------- /图片/第十五章/15.15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.15.png -------------------------------------------------------------------------------- /图片/第十五章/15.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.16.png -------------------------------------------------------------------------------- /图片/第十五章/15.17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.17.png -------------------------------------------------------------------------------- /图片/第十五章/15.18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.18.png -------------------------------------------------------------------------------- /图片/第十五章/15.19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.19.png -------------------------------------------------------------------------------- /图片/第十五章/15.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.2.png -------------------------------------------------------------------------------- /图片/第十五章/15.20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.20.png -------------------------------------------------------------------------------- /图片/第十五章/15.21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.21.png -------------------------------------------------------------------------------- /图片/第十五章/15.22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.22.png -------------------------------------------------------------------------------- /图片/第十五章/15.23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.23.png -------------------------------------------------------------------------------- /图片/第十五章/15.24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.24.png -------------------------------------------------------------------------------- /图片/第十五章/15.25(1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.25(1).png -------------------------------------------------------------------------------- /图片/第十五章/15.25(2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.25(2).png -------------------------------------------------------------------------------- /图片/第十五章/15.25(3).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.25(3).png -------------------------------------------------------------------------------- /图片/第十五章/15.25(4).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.25(4).png -------------------------------------------------------------------------------- /图片/第十五章/15.25(5).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.25(5).png -------------------------------------------------------------------------------- /图片/第十五章/15.26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.26.png -------------------------------------------------------------------------------- /图片/第十五章/15.27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.27.png -------------------------------------------------------------------------------- /图片/第十五章/15.28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.28.png -------------------------------------------------------------------------------- /图片/第十五章/15.29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.29.png -------------------------------------------------------------------------------- /图片/第十五章/15.3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.3.png -------------------------------------------------------------------------------- /图片/第十五章/15.30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.30.png -------------------------------------------------------------------------------- /图片/第十五章/15.31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.31.png -------------------------------------------------------------------------------- /图片/第十五章/15.32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.32.png -------------------------------------------------------------------------------- /图片/第十五章/15.4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.4.png -------------------------------------------------------------------------------- /图片/第十五章/15.5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.5.png -------------------------------------------------------------------------------- /图片/第十五章/15.6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.6.png -------------------------------------------------------------------------------- /图片/第十五章/15.7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.7.png -------------------------------------------------------------------------------- /图片/第十五章/15.8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.8.png -------------------------------------------------------------------------------- /图片/第十五章/15.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/15.9.png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (1).png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (10).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (10).png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (11).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (11).png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (12).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (12).png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (13).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (13).png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (14).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (14).png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (15).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (15).png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (16).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (16).png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (17).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (17).png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (18).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (18).png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (19).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (19).png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (2).png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (20).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (20).png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (21).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (21).png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (22).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (22).png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (3).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (3).png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (4).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (4).png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (5).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (5).png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (6).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (6).png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (7).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (7).png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (8).png -------------------------------------------------------------------------------- /图片/第十五章/备用/备用 (9).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十五章/备用/备用 (9).png -------------------------------------------------------------------------------- /图片/第十六章/16-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十六章/16-1.png -------------------------------------------------------------------------------- /图片/第十六章/16-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十六章/16-2.png -------------------------------------------------------------------------------- /图片/第十六章/16-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十六章/16-3.png -------------------------------------------------------------------------------- /图片/第十六章/16-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十六章/16-4.png -------------------------------------------------------------------------------- /图片/第十六章/16-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十六章/16-5.png -------------------------------------------------------------------------------- /图片/第十六章/16-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十六章/16-6.png -------------------------------------------------------------------------------- /图片/第十章/10.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第十章/10.1.png -------------------------------------------------------------------------------- /图片/第四章/4.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第四章/4.1.png -------------------------------------------------------------------------------- /图片/第四章/4.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第四章/4.2.png -------------------------------------------------------------------------------- /图片/第四章/bing_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第四章/bing_1.png -------------------------------------------------------------------------------- /图片/第四章/bing_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第四章/bing_2.png -------------------------------------------------------------------------------- /图片/第四章/bing_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ghLcd9dG/Selenium-Document/9c1a426f597a30610d007030eff526d6a907a6b1/图片/第四章/bing_3.png --------------------------------------------------------------------------------