Python爬虫-博客and贴吧

 使用环境为python3.7


 本文主要是为了截取html代码段中超链接地址


# coding:utf-8
#coding:gbk
from urllib.request import urlopen
#html代码
str0 = 'blabla<a title="" target="_blank" href="http://blog.sina.com.cn/s/blog_4701280b0102wrup.html">写给那个茶水妹的《乘风破浪》诞生…</a>'

title = str0.find(r'<a title')#使用find从<a title开始查找
print(title)#返回的是int型数字

href = str0.find(r'href=')
print(href)#返回的是int型数字

html = str0.find(r'.html')
print(href)#返回的是int型数字

url = str0[href+6:html+5]#使用列表 [] ,截取代码段得到地址url
print(url)

content = urlopen(url).read().decode('utf-8')
#print(content)
filename = url[-26:]
print(filename)
open('a.txt','w').write(content)
'''
在Python的string前面加上‘r’, 是为了告诉编译器这个string是个raw string,不要转意backslash '\' 。 例如,\n 在raw string中,是两个字符,\和n, 而不会转意为换行符。由于正则表达式和 \ 会有冲突,因此,当一个字符串使用了正则表达式后,最好在前面加上'r'。

例:r"\n\n\n\n\n\n”
作用:声明后面的字符串是普通字符串
特殊字符串中含有:转义字符 \n \t 什么什么的
用途:一般用在 正则表达式、文件绝对地址
'''

帝吧网页下载,哈哈

import requests
class TiebaSpider:
    def __init__(self, tieba_name):
        self.tiebb_name = tieba_name
        self.url_temp = "https://tieba.baidu.com/f?kw="+tieba_name+"&ie=utf-8&pn={}"
        self.headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}

    def get_url_list(self):
        url_list = []
        for i in range(10):
            url_list.append(self.url_temp.format(i*50))
        return url_list

    def parse_url(self,url):
        response = requests.get(url,headers=self.headers)
        return response.content.decode()

    def save_html(self,html_str,page_num):
        file_path = r"/home/linux/Desktop/{}-第{}页.html".format(self.tiebb_name,page_num)
        with open(file_path,"w",encoding="utf-8") as f:
            f.write(html_str)

    def run(self):
        url_list = self.get_url_list()
        for url in url_list:
            html_parse = self.parse_url(url)
            page_num = url_list.index(url)+1 #页码数
            self.save_html(html_parse,page_num)

if __name__ == '__main__':
    t = TiebaSpider("李毅")
    t.run()
'''
format 函数可以接受不限个参数,位置可以不按顺序。
>>> "{1} {0} {1}".format("hello", "world")  # 设置指定位置
'world hello world'
'''

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值