python爬虫的入门试炼

2018-10-29  本文已影响0人  i我所爱

网络爬虫初解:

如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,沿着网络抓取自己的猎物(数据)爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程序;从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据(图片、视频) 爬到本地,进而提取自己需要的数据,存放起来使用。

image

爬取某网站的基本信息 :
先以猫眼网站(http://maoyan.com/board/4)为例:

想从网站获取的信息有:

电影名称,演员作者,发布时间,评分

电影名称:name
演员作者:star
发布时间:release_time
评分:scores

最关键的步骤如下:在网站中分别选中电影名称;作者;发布时间;评分右键选择检查,会出现所示代码然后复制下来,将该网页源代码打开,搜索相同字段,然后选择出你需要的部分,通过pycharm代码将你选择的电影名称;作者;发布时间;评分等爬取下来。

详细的整体代码如下:

import requests
import re
import time

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
}

def get_info(url):
    res = requests.get(url,headers=headers)
    names = re.findall('<a href="/films/.*?" title="(.*?)" class="image-link"',res.text)
    stars = re.findall('<p class="star">(.*?)</p>',res.text,re.S)
    release_times = re.findall('<p class="releasetime">上映时间:(.*?)</p>',res.text)
    scores = re.findall('<p class="score"><i class="integer">(.*?)</i><i class="fraction">(.*?)</i></p>',res.text)
    for name,star,release_time,score in zip(names,stars,release_times,scores):
        print(name,star.strip(),release_time,score[0]+score[1])

if __name__ == '__main__':
    urls = ['http://maoyan.com/board/4?offset={}'.format(str(i)) for i in range(0, 100, 10)]
    for url in urls:
        get_info(url)
        time.sleep(0)

爬取后的信息很多,有一点乱,这就需要整理一下信息。

运用pycharm与Excel相结合,通过pycharm建立Excel文件。
例如:建立一个姓名,性别的Excel的文件。

import csv
fp = open('C:/Users/lenovo/Desktop/text.csv','w',encoding='utf-8',newline='')
writer = csv.writer(fp)
writer .writerow(['name','sex'])
writer .writerow(['***','男'])

整理信息

运用上面的例子,然后将爬取信息的信息整理到Excel文件夹中:

详细代码如下:

import requests
import re
import csv

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
}

def get_info(url):
    res = requests.get(url,headers=headers)
    names = re.findall('<a href="/films/.*?" title="(.*?)" class="image-link"',res.text)
    stars = re.findall('<p class="star">(.*?)</p>',res.text,re.S)
    release_times = re.findall('<p class="releasetime">上映时间:(.*?)</p>',res.text)
    scores = re.findall('<p class="score"><i class="integer">(.*?)</i><i class="fraction">(.*?)</i></p>',res.text)
    for name,star,release_time,score in zip(names,stars,release_times,scores):
        print(name,star.strip(),release_time,score[0]+score[1])
        writer.writerow([name, star.strip(), release_time, score[0] + score[1]])

if __name__ == '__main__':
    fp = open('C:/Users/lenovo/Desktop/新建文件夹 (2)/python代码/text.csv', 'w', encoding='utf-8', newline='')
    writer = csv.writer(fp)
    writer.writerow(['name','star','release_times','scores'])
    urls = ['http://maoyan.com/board/4?offset={}'.format(str(i)) for i in range(0, 100, 10)]
    for url in urls:
        get_info(url)

如此一来就将猫眼视频上的信息爬取了下来,然后我们还可以通过Excel进行各种对比;选择,挑选出最好的,等等一系列人们所需要的数据。
这就是最简单的python知识。后面我们将慢慢对python进行解读,以下仅供趣读:
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

Python 特点

  1. 易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
  2. 易于阅读:Python代码定义的更清晰。
  3. 易于维护:Python的成功在于它的源代码是相当容易维护的。
  4. 一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
  5. 互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
  6. 可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
  7. 可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
  8. 数据库:Python提供所有主要的商业数据库的接口。
  9. GUI编程:Python支持GUI可以创建和移植到许多系统调用。
  10. 可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。

大家一定要认真对待,不能像 小C(作者)一样,相信你们一定学的更好。

上一篇下一篇

猜你喜欢

热点阅读