-
实现方式:
1. 内存:python 内存,待爬取url集合:set(),已爬取:set()。 set可以去掉重复的
2. 关系数据库(表形式)urls(url,is_crawled)
3. 缓存数据库 redis 待/已爬取集合:set,支持set (高性能,都用它)
查看全部 -
URL管理器:防止重复抓取,循环抓取
查看全部 -
看图就好了
查看全部 -
web crawler调度端→URL管理器→网页下载器→网页解析器→价值数据
查看全部 -
抓取想要信息
查看全部 -
import re #导入正则表达式要用的模块
from bs4 import BeautifulSoup
html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""
soup=BeautifulSoup(html_doc,'html.parser') #(文档字符串,解析器)
print('获取所有链接:')
links=soup.find_all('a')
for link in links:
print(link.name,link['href'],link.get_text()) #(名称,URL,文字)
print('获取指定链接(获取Lacie链接):')
#link_node=soup.find('a',id="link2") 运行结果一样
link_node=soup.find('a',href='http://example.com/lacie') #注意find和find_all
print(link_node.name,link_node['href'],link_node.get_text())
print('输入正则模糊匹配出需要的内容:')
link_node=soup.find('a',href=re.compile(r"ill")) #'r'表示正则中出现反斜线时,我们只需写一个反斜线,否则我们要写两个
print(link_node.name,link_node['href'],link_node.get_text())
print('输入p这个段落文字(指定class获取内容):')
p_node=soup.find('p',class_="story")
print(p_node.name,p_node.get_text())
输出:
获取所有链接: a http://example.com/elsie Elsie a http://example.com/lacie Lacie a http://example.com/tillie Tillie 获取指定链接(获取Lacie链接): a http://example.com/lacie Lacie 输入正则模糊匹配出需要的内容: a http://example.com/tillie Tillie 输入p这个段落文字(指定class获取内容): p Once upon a time there were three little sisters; and their names were Elsie, Lacie and Tillie; and they lived at the bottom of a well.
查看全部 -
下载 网页的方法 1 :最简洁的方法
import urllib 2
response = urllib2.urlopen(‘网页地址’)
print reponse. getcoed 获取 状态码 如果 200 表示获取成功
查看全部 -
新查看全部
-
基本构成。查看全部
-
urllib2实战演示查看全部
-
beautifulsoup安装与测试查看全部
-
访问节点信息
node,name
node['href']
node.get_text()
查看全部 -
搜索节点(find_all,find)
soup.find_all('a')
soup.find_all('a',href='/view/123.htm')
soup.find_all('a',href='re.compile(r'/view/\d+\.htm'))
soup.find_all('div',class_='abc',string='python')
查看全部 -
创建BeautifulSoup对象
from bs4 import BeautifulSoup
#根据HTML网页字符串创建BeautifulSoup对象
soup = BeautifulSoup(
html_doc,
'html.parser'
from_encoding='utf8'
)
查看全部 -
结构化解析-DOM树查看全部
举报