首先下在: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