Python爬虫-1

Posted 下辈子做一只猫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python爬虫-1相关的知识,希望对你有一定的参考价值。

#练习1:获取搜狐网页上所有的URL并且把与篮球有关的内容筛选出来
#算法:
#1、获取搜狐网站所有内容
#2、判断哪些是链接,获取URL格式有效的链接
#3、获取每个有效URL网页的内容
#4、判断内容是否包含篮球
#5、如果包含篮球,保存网页

import requests
import re
import bs4

resq = requests.get("http://www.sohu.com")#请求搜狐网站
print resq.text[:100]#打印响应结果前一百长度

print "*****************"*5
links = re.findall(rhref="(.*?)", resq.text)#查找所有包含href内容
#print links
print len(links)
valid_link = []#保存有效连接
invalid_link = []#保存无效连接

print "*****************"*5

for link in links:
    if re.search(r"(\.jpg)|(\.jpeg)|(\.gif)|(\.ico)|(\.png)|(\.js)|(\.css)$", link.strip()):#资源连接筛选出来
        #print 6, link
        invalid_link.append(link.strip())
        continue#进入此判断之后执行完直接执行下一次循环
    elif link.strip() == "" or link.strip() == "#" or link.strip() == "/":#无效内容筛选去除
        #print 1,link
        invalid_link.append(link)
        continue
    elif link.strip().startswith("//"):#把有效相对连接筛选保存
        #print 2,link
        valid_link.append("http:" + link.strip())
        continue
    elif link.strip().count("javascript") >= 1 or link.strip().count("mailto:") >= 1:#引用js连接及邮箱超级连接去除
        #print 3,link
        invalid_link.append(link.strip())
        continue
    elif re.match(r"/\w+", link):#把剩下所有内容连接再做进一步筛选
        #print 5,link
        if re.match(r"http://.*?/", resq.url.strip()):#http开头连接筛选
            valid_link.append(re.match(r"http://.*?/", resq.url.strip()).group() + link.strip())#把连接以/结尾内容保存
        else:
            valid_link.append(re.match(r"http://.*", resq.url.strip()).group() + link.strip())#把连接以内容结尾保存
        continue
    else:
        #print 7,link
        valid_link.append(link.strip())#筛选剩下的内容都保存到有效列表中

print "*****************"*5

file_num = 1#为创建文件准备
for link in list(set(valid_link)):
    # print link
    resq = requests.get(link, verify=True)#允许证书校验并访问所有保存的有效连接
    if u"篮球" in resq.text:#筛选网页内容中是否存在“篮球”内容
        #print link
        if umeta charset="utf-8" in resq.text:#判断网页是否以utf-8编码
            with open(r"e:\\test4\\crawler\\" + str(file_num) + ".html", "w") as fp:
                fp.write(resq.text.strip().encode("utf-8"))#编码内容为utf-8后保存到指定目录
        else:
            with open(r"e:\\test4\\crawler\\" + str(file_num) + ".html", "w") as fp:
                fp.write(resq.text.strip().encode("gbk"))#编码内容为gbk后保存到指定目录
        file_num += 1

print "Done!"

 

以上是关于Python爬虫-1的主要内容,如果未能解决你的问题,请参考以下文章

Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段

python爬虫学习笔记-M3U8流视频数据爬虫

爬虫遇到头疼的验证码?Python实战讲解弹窗处理和验证码识别

python网络爬虫

Python 利用爬虫爬取网页内容 (div节点的疑惑)

如何在 python 中并行化以下代码片段?