python基本爬虫思路

组成部分

  • url管理器
管理要爬取和将要爬取的url
关键在于唯一性,存储的时候,不然会很浪费效率
比如set()有唯一性的优点
  • html下载器
下载网页内容
基本语法:
from urllib import request
reponse = request.urlopen(url)#开始爬取
response.read()#网页内容
  • html解析器
解析下载好的网页内容,提取要的内容
常用module-BeautifulSoup
基本语法:
from bs4 import BeautifulSoup
import urllib.parse
content = find_all('a',href='sss')#找到所有链接为sss的a标签
  • 存储器
存储爬取好的内容
关键在于与数据库的链接

关于urllib的学习

  • urllib模拟浏览器访问网址
  • 携带User-Agent头(里面包含浏览器、电脑的信息,添加这个头以模拟更真实的访问)
from urllib.request import Request
#注意Request的引入
req = request.Request(url)
req.add_header(key,value)#添加信息,这只是添加一个头部,如果有很多个要写多个add_header
response = request.urlopen(req)#此时传进去的就不是url而是req了
  • POST请求,比如说登陆的时候,得提交用户名和密码
from urllib import parse
#注意parse的引入
#使用urlencode生成post数据
postData = parse.urlencode([
(key1,val1),
(key2,val2)
])
request.urlopen(req,data=postData.encode('utf-8'))#在urlopen里面data参数携带要发送的数据,注意要编码发送
  • 得到请求状态 response.status
  • 得到服务器的类型 response.reason

关于Beautiful Soup的使用

  • 默认使用unicode来接受一个文档,并且以utf-8返回,所以用BeautifulSoup的时候不用去解码
  • 引入from bs4 import BeautifulSoup,as起别名->from bs4 import BeautifulSoup as bs然后就可以用bs了,一般情况不要起别名,会很混乱的,别人也不方便看
  • beautifulsoup解析器,就是bs以何种方式来解析目标对象,一般用python自带的html.parser


    soup = BeautifulSoup(html_doc,"html.parser")

  • 简单的方法
soup.标签名 #获取某个标签
soup.find('标签名')
soup.find(id="")根据id来找
soup.find(id="sidebar").string,获取这个id标签内的内容,class不可以,class_可以,class是python关键字
soup.find_all('标签名‘)
soup.find("p",{“class”:"story"})根据属性来找
#如果根据类名来找一组元素的话,要用 find_all并且要指定元素名
#获取标签内的文本内容,string属性或者get_text()方法
get_text()-> 获得标签中包含的文本内容,包括孙子的文本内容
.string->如果标签只有一个NavigableString类型子节点或者仅有一个子节点,那么可以用.string得到子节点,如果有多个子节点就不可以

你可能感兴趣的:(python基本爬虫思路)