0人加入学习
前置知识:热门电影短评数据爬取与分析
价格 免费

import re

pat=re.compile(r'\d+')

print(re.search(pat,'abc55'))

re.findall(pat,'as,89j4jj')  #返回一个列表

title_pat = r'(?<=<title>).*?(?=</title>)'

title_com=re.compile(title_pat,re.M|re.S)

title_search=re.search(title_com,rqg.text)

print(title.search)

title=title_search.group()

print(title)

 

#findall方法

re.findall(r'<title>(.*?)</title>',rqg.text)

[展开全文]

import requests

from PIL import Image

from http import cookiejar

s=requests.Session() 

s.cookies=cookiejar.LWPCookieJar('cookie')

#这个什么意思:cookie用于服务器端识别客户端,当发送请求的客户端享有同样的cookie时,即可认定客户端是同一个。requests库的会话对象Session能够跨请求地保持某些参数。

login_url='http://www.tipdm.org/login.jspx'   #登录url

headers={''}

 

#人工识别验证码

def get_captcha():
  captcha_url=''#验证码的地址

  r=s.get(captcha_url,headers=headers)

  with open('C:/Users/xx/Desktop/captcha.gif','wb') as f:

     f.write(r.content)

  im=Image.open('C:/Users/xx/Desktop/captcha.gif')

  im.show()

 captcha=input('请输入验证码:')

  return captcha

login_data={'username':'pc2019','password':'pc2019','captcha':get_captcha()}

r=s.post(login_url,data=login_data,headers=headers)

print(r.url)

 

#保存cookie

s.cookies.save(ignore_discard=True,ignore_expires=True)

#加载cookie

try:

   s.cookies.load(ignore_discard=True)

except:

   print('未加载成功')

 

 

r=s.get(login_url,headers=headers)

print(r.url)

 

 

[展开全文]

login_url=''

headers={''}

cookies_str=''

cookies={}

for line in cookies_str.split(';'):
    key,value =line.split('=',1)  #1分割成两个

    cookies[key]=value

r=requests.get(login_url,cookies=cookies,headers=headers)

print(r.url)  #如果返回登录成功的网址即成功

 

 

[展开全文]

 

login_data={'username':'pc2019','password':'pc2019','captcha':'zzeq'}

login_url=''

r=requests.post(login_url,data=login_data)

#200表明表单发送出去了

 

from data:returnURL

完整:
import requests

from PIL import Image

s=requests.Session() 

#这个什么意思:cookie用于服务器端识别客户端,当发送请求的客户端享有同样的cookie时,即可认定客户端是同一个。requests库的会话对象Session能够跨请求地保持某些参数。

login_url='http://www.tipdm.org/login.jspx'   #登录url

headers={''}

 

#人工识别验证码

def get_captcha():
  captcha_url=''#验证码的地址

  r=s.get(captcha_url,headers=headers)

  with open('C:/Users/xx/Desktop/captcha.gif','wb') as f:

     f.write(r.content)

  im=Image.open('C:/Users/xx/Desktop/captcha.gif')

  im.show()

 captcha=input('请输入验证码:')

  return captcha

login_data={'username':'pc2019','password':'pc2019','captcha':get_captcha()}

r=s.post(login_url,data=login_data,headers=headers)

print(r.url)

[展开全文]

 

表单登录之人工识别验证码

from PIL import Image

captcha_url=''

r=requests.get(captcha_url,headers=headers)

with open('C:/Users/xx/Desktop/captcha.gif','wb') as f:

   f.write(r.content)

im=Image.open('C:/Users/xx/Desktop/captcha.gif')

im.show()

captcha=input('请输入验证码:')

 

 

设置代理IP:

proxies={'https':'https://'用户名:密码@服务器地址}
r=requests.get('',proxies=proxies)

 

 

[展开全文]

数据存储

 

存入数据库mysql

import pymysql

con=pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',db='test',charset='utf8',connect_timeout=1000)

con=pymysql.connect('localhost','root','123456','test')

可视化工具:navicat

游标:
cursor=con.cursor()

sql='create table if not exists class (id int(10) primary key auto_increment, name varchar(20) not null, text varchar(20)not null )'

cursor.execute(sql)

cursor.execute('show tables')

 

sql='insert into class(name,text) values(%s,%s)'

cursor.execute(sql,(title,target))

con.commit()

data=cursor.execute('select * from class')

data=cursor.fetchmany()

con.close()

 

[展开全文]

创建beautifulsoup对象

from bs4 import BeautifulSoup

html=rqg.content.decode('utf-8')  #字节 解码

soup=BeautifulSoup(html,'lxml')  #为什么是lxml

print(soup.prettify())

 

对象类型

复杂的树形结构 四种对象类型

TAG:<titile>等HTML标签+其中包含的内容

    两个属性:name  attributes

    例子:

    soup.title;soup.body.a;        len(soup.find_all('a')); 

tag.attrs #标签下的属性的字典列表

tag['class']

NavigableString对象:包含在tag中的文本字符串内容。该对象无法被编辑。replace_with

tag=soup.title

print(tag.string)

type(tag.string) #navigableString

tag.string.replace_with('taidikeji')

 

BeautifulSoup对象类型:文档的全部内容。

Comment对象类型:文档的注释部分。特殊的输出格式,prettify。特殊的navigableString。<c>(略 18分左右)

 

搜索特定结点并获取其中的链接以及文本

find : 返回结果

 

find_all : 返回列表。

搜索:name参数搜索同名的全部子节点,多种过滤器;css类名模糊匹配

soup.find_all('title')

soup.title.string

soup.find_all('ul',class_='menu')  #css类名完全匹配

or

soup.find_all(id='menu')  #传入关键字

print(target)

 

print(soup.ul.find_all('a'))  #ul下所有a标签

target=soup.ul.find_all('a')

urls=[]

text=[]

for tag in target:

  urls.append(tag.get('herf'))

  text.append(tag.get_text())

 

第三章ppt p45:所有findall方法

 

 

[展开全文]

request实现网页请求

 

url=''

rqg=requests.get(url)

type(rqg)

rqg.status_code

rqg.encoding   //常常自动错误 查看现在的编码

rqg.headers

rqg.text

 

编码:
rqg.encoding='utf-8'

import chardet

chardet.detect(rqg.content)  #字节类型的数据  检测出编码方式.((在豆瓣上不行

rqg.encoding=chardet.detect(rqg.content)['encoding']

print(rqg.text)

 

请求头和响应头:
headers={ 'User-Agent':'Mozilla/5.0(Windows NT 6.1; Win64; x64) Chrome/65.0.3325.181' }

rqg=requests.get(url,headers=headers)

超时:
rqg=requests.get(url,headers=headers,timeout=2)

 

 

 

[展开全文]

如何获取

headers里面的user-agent?

ppt中直接给出

'Mozilla/5.0(Windows NT 6.1; Win64; x64) Chrome/65.0.3325.181'

[展开全文]

授课教师

人工智能金牌讲师

课程特色

视频(58)
下载资料(1)

学员动态

还没有动态