python的urllib2和beautifulsoup编写爬虫

本文介绍了如何利用Python的urllib2和BeautifulSoup库编写爬虫,首先通过pip安装必要的库,然后爬取指定网站内容并保存到download_dir。接着,处理文件中img标签的路径,区分线上和本地情况。对于线上,直接修改img链接;对于本地,下载图片到picture_dir,并更新文件中img路径。最后,通过运行launch.py脚本来执行整个流程,并在指定目录查看结果。
摘要由CSDN通过智能技术生成

首先下在:pip install beautifulsoup4
我这里爬取的是Python2.7的廖雪峰老师的教程

首先介绍项目的流程:
1.我这里首先是将需要爬取的内容爬出后放到了download_dir目录下,此时,文件中的img的图片路径是错的,所以要修改
2.img的路径修改分为线上和本地:线上:链接为网上的url。本地:首先下载图片到本地
3.线上:读取文件中download_dir目录中文件的内容,修改img路径,并将修改后的文件保存到online_dir目录下
4.本地:首先下载图片到picture_dir目录下
5.本地:读取文件中download_dir目录中文件的内容,根据picture_dir,修改img路径,并将修改后的文件保存到local_dir目录下

以下就是代码:
首先创建一个spider.py文件写入以下内容:
spider.py:

#!/usr/bin/python
# -*- encoding:utf-8 -*-

import urllib
import urllib2
import threading
import time
import random
import os
from bs4 import BeautifulSoup

'''
    BeautifulSoup 是一个可以从HTML或XML文件中提取数据的Python库
'''


#封装
class article:
    def __init__(self,title,readNum,content):
        self.title = title
        self.readNum = readNum
        self.content = content



class spider_python2_7:

    def __init__(self,domain,url,headers,values):
        self.domain = domain
        self.url = url
        self.headers = headers
        self.values = values

    '''
        将页面内容下载到本地
    '''
    def parse(self,url=None):

        #编码
        data = urllib.urlencode(self.values)
        #访问目标url
        #模拟登陆
        # req = urllib2.Request(url=self.url,headers=self.headers,data=data)
        url = self.domain+url if url!=None else self.url
        print url
        req = urllib2.Request(url=url,headers=self.headers)
        #响应的内容
        resp = urllib2.urlopen(req)
        #读取内容
        html = resp.read()
        return html

    '''
        获取页面的url地址
        html:通过parse获得的内容
    '''
    def getUrls(self,html):

        soup = BeautifulSoup(html)#"html.parser")

        ul = soup.find_all("ul")
        #我们需要的信息在倒数第二个中
        lis =  ul[len(ul)-1].find_all("li")
        urls = []
        for li in lis:
            #获取链接中的url地址
            urls.append(li.find("a")["href"])
        return urls


    '''
        获取内容,并存储到文件中
        location:文件存储的位置和文件名
    '''
    def getContent(self,urls,location):

        self.exists(location)
        f = open(location+"/pytho
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值