爬虫初探

3

.这是访问post 需要模拟用户登录信息,------data(内设函数信息)=data‘ data’= (urllib.parse.urlencode({"hello":"world"}),encoding="utf-8")

import urllib.parse
data=bytes(urllib.parse.urlencode({"hello":"world"}),encoding="utf-8")
response =urllib.request.urlopen("https://httpbin.org/post",data=data)   #这是访问的办法
print(response.read().decode("utf-8"))

 

进行超时处理,太慢先不爬取,也有可能是坏链接,先处理别的

try:
    response =urllib.request.urlopen("https://httpbin.org/get",timeout=0.01)
    print(response.read().decode("utf-8"))
except Exception as e:
    print("超时")

初步伪装:将爬虫模拟成电脑浏览器访问

url="https://movie.douban.com/top250"
headers={
"User-Agent":" Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 Edg/87.0.664.75"
}
data= bytes(urllib.parse.urlencode({'name':'eric'}),encoding="utf-8")
req= urllib.request.Request(url=url,data=data,headers=headers,method="POST")#这里其实只需要url和headers
respense=urllib.request.urlopen(req)
print(respense.read().decode("utf-8"))

***beatifulsoup 的四种类型

第一种Tag:标签类型

前后包含标签

file=open("./baidu.html"'"rb")
html=file.read()
bs=Beautifulsoup(html,"html.parser")
print(bs.head)
print(bs.a)
print(bs.title)

第二种 标签里的内容(字符串)

前后没有标签内容,直接打印字符串

#上面部分与上面一样
print(bs.title.string)这块不一样

第三种 整个一个文档

print(bs)

第四种 不包含符号的字符串

printr(bs.a.title)

 

文档搜索

1、字符串过滤:会查找与字符串完全匹配的内容

找出中间的

t_list=bs.find_all("a")

2、正则表达式搜索:内部含有a的都算

t_list=bs.find_all(re.compile("a"))

3、传入方法

def name_is_exists(tag):
    return tag.has_attr("name")
t_list=bs.find_all(name_is_exists)


#4参数

参数查找,查找href
t_list = bs.find_all(href="http://news.baidu.com")
for item in t_list:
    print(item)

文本查找查找text里面是数字的
t_list =bs.find_all(text=re.compile("\d"))
for item in t_list:
    print(item)

 limit参数
t_list = bs. find_all("a",limit=3)
得到这样信息时限定可以得到多少个这样的数据

#5、css选择器

t_list = bs.select(".mnav") 通过标题
#t_list = bs.select("title") 通过标签
#t_list = bs.select("#u1")  通过id查找
#t_list = bs.select("a[class='bri']")    通过属性查找
#t_list = bs.select("head->title") 通过子标签查找,一层一层下去
for item in t_list:
    print(item)

 

 

你可能感兴趣的:(python)