python爬虫的入门试炼
网络爬虫初解:
如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,沿着网络抓取自己的猎物(数据)爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程序;从技术层面来说就是 通过程序模拟浏览器请求站点的行为,把站点返回的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 特点
- 易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
- 易于阅读:Python代码定义的更清晰。
- 易于维护:Python的成功在于它的源代码是相当容易维护的。
- 一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
- 互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
- 可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
- 可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
- 数据库:Python提供所有主要的商业数据库的接口。
- GUI编程:Python支持GUI可以创建和移植到许多系统调用。
- 可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。
大家一定要认真对待,不能像 小C(作者)一样,相信你们一定学的更好。