‘壹’ 怎么用python抓取网页并实现一些提交操作
首先我们找到登录的元素,在输入账号处选中–>右键–>检查
然后直接查询网页源代码去找到上面的部分,根据标签来观察提交的表单参数,这里强调一下:
form标签和form标签下的input标签非常重要,form标签中的action属性代表请求的URL,input标签下的name属性代表提交参数的KEY。
代码参考如下:
import requests
url="网址" #action属性
params={
"source":"index_nav", #input标签下的name
"form_email":"xxxxxx", #input标签下的name
"form_password":"xxxxxx" #input标签下的name
}
html=requests.post(url,data=params)
print(html.text)
运行后发现已登录账号,相当于一个提交登陆的操作
‘贰’ python 中如何获取表单数据
使用Python访问网页主要有三种方式: urllib, urllib2, httplib urllib比较简单,功能相对也比较弱,httplib简单强大,但好像不支持session 1. 最简单的页面访问 res=urllib2.urlopen(url) print res.read() 2. 加上要get或post的数据 data={"na...
‘叁’ 怎么使用python来爬取网页上的表格信息
稍微说一下背景,当时我想研究蛋白质与小分子的复合物在空间三维结构上的一些规律,首先得有数据啊,数据从哪里来?就是从一个涵盖所有已经解析三维结构的蛋白质-小分子复合物的数据库里面下载。这时候,手动一个个去下显然是不可取的,我们需要写个脚本,能从特定的网站选择性得批量下载需要的信息。python是不错的选择。
import urllib #python中用于获取网站的模块
import urllib2, cookielib
有些网站访问时需要cookie的,python处理cookie代码如下:
cj = cookielib.CookieJar ( )
opener = urllib2.build_opener( urllib2.HttpCookieProcessor(cj) )
urllib2.install_opener (opener)
通常我们需要在网站中搜索得到我们需要的信息,这里分为二种情况:
1. 第一种,直接改变网址就可以得到你想要搜索的页面:
def GetWebPage( x ): #我们定义一个获取页面的函数,x 是用于呈递你在页面中搜索的内容的参数
url = 'http://xxxxx/xxx.cgi?&' + ‘你想要搜索的参数’ # 结合自己页面情况适当修改
page = urllib2.urlopen(url)
pageContent = page.read( )
return pageContent #返回的是HTML格式的页面信息
2.第二种,你需要用到post方法,将你搜索的内容放在postdata里面,然后返回你需要的页面
def GetWebPage( x ): #我们定义一个获取页面的函数,x 是用于呈递你在页面中搜索的内容的参数
url = 'http://xxxxx/xxx' #这个网址是你进入搜索界面的网址
postData = urllib.urlencode( { 各种‘post’参数输入 } ) #这里面的post参数输入需要自己去查
req= urllib2.Request (url, postData)
pageContent = urllib2.urlopen (req). read( )
return pageContent #返回的是HTML格式的页面信息
在获取了我们需要的网页信息之后,我们需要从获得的网页中进一步获取我们需要的信息,这里我推荐使用 BeautifulSoup 这个模块, python自带的没有,可以自行网络谷歌下载安装。 BeautifulSoup 翻译就是‘美味的汤’,你需要做的是从一锅汤里面找到你喜欢吃的东西。
import re # 正则表达式,用于匹配字符
from bs4 import BeautifulSoup # 导入BeautifulSoup 模块
soup = BeautifulSoup(pageContent) #pageContent就是上面我们搜索得到的页面
soup就是 HTML 中所有的标签(tag)BeautifulSoup处理格式化后的字符串,一个标准的tag形式为:
hwkobe24
通过一些过滤方法,我们可以从soup中获取我们需要的信息:
(1) find_all ( name , attrs , recursive , text , **kwargs)
这里面,我们通过添加对标签的约束来获取需要的标签列表, 比如 soup.find_all ('p') 就是寻找名字为‘p’的 标签,而soup.find_all (class = "tittle") 就是找到所有class属性为"tittle" 的标签,以及soup.find_all ( class = re.compile('lass')) 表示 class属性中包含‘lass’的所有标签,这里用到了正则表达式(可以自己学习一下,非常有用滴)
当我们获取了所有想要标签的列表之后,遍历这个列表,再获取标签中你需要的内容,通常我们需要标签中的文字部分,也就是网页中显示出来的文字,代码如下:
tagList = soup.find_all (class="tittle") #如果标签比较复杂,可以用多个过滤条件使过滤更加严格
for tag in tagList:
print tag.text
f.write ( str(tag.text) ) #将这些信息写入本地文件中以后使用
(2)find( name , attrs , recursive , text , **kwargs )
它与 find_all( ) 方法唯一的区别是 find_all() 方法的返回结果是值包含一个元素的列表,而 find() 方法直接返回结果
(3)find_parents( ) find_parent( )
find_all() 和 find() 只搜索当前节点的所有子节点,孙子节点等. find_parents() 和 find_parent() 用来搜索当前节点的父辈节点,搜索方法与普通tag的搜索方法相同,搜索文档搜索文档包含的内容
(4)find_next_siblings() find_next_sibling()
这2个方法通过 .next_siblings 属性对当 tag 的所有后面解析的兄弟 tag 节点进代, find_next_siblings() 方法返回所有符合条件的后面的兄弟节点,find_next_sibling() 只返回符合条件的后面的第一个tag节点
(5)find_previous_siblings() find_previous_sibling()
这2个方法通过 .previous_siblings 属性对当前 tag 的前面解析的兄弟 tag 节点进行迭代, find_previous_siblings()方法返回所有符合条件的前面的兄弟节点, find_previous_sibling() 方法返回第一个符合条件的前面的兄弟节点
(6)find_all_next() find_next()
这2个方法通过 .next_elements 属性对当前 tag 的之后的 tag 和字符串进行迭代, find_all_next() 方法返回所有符合条件的节点, find_next() 方法返回第一个符合条件的节点
(7)find_all_previous() 和 find_previous()
这2个方法通过 .previous_elements 属性对当前节点前面的 tag 和字符串进行迭代, find_all_previous() 方法返回所有符合条件的节点, find_previous()方法返回第一个符合条件的节点
具体的使用方法还有很多,用到这里你应该可以解决大部分问题了,如果要更深入了解可以参考官方的使用说明哈!
‘肆’ 图中是我点击一个网站里相关内容的时候,抓取的发送post表单。现在我用python手动提交post
是的,至于怎么确定是这个地址,你理解它的逻辑就行了,截获post是截获的哪个阶段?是从提交页面发给接受页面的时候截获的,所以你截取的post中这个post地址就是接受地址。只不过是相对路径,需要加上host才是完整路径。而这个host肯定是你在访问的网站域名。
‘伍’ 如何用Python爬虫抓取网页内容
首先,你要安装requests和BeautifulSoup4,然后执行如下代码.
importrequests
frombs4importBeautifulSoup
iurl='http://news.sina.com.cn/c/nd/2017-08-03/doc-ifyitapp0128744.shtml'
res=requests.get(iurl)
res.encoding='utf-8'
#print(len(res.text))
soup=BeautifulSoup(res.text,'html.parser')
#标题
H1=soup.select('#artibodyTitle')[0].text
#来源
time_source=soup.select('.time-source')[0].text
#来源
origin=soup.select('#artibodyp')[0].text.strip()
#原标题
oriTitle=soup.select('#artibodyp')[1].text.strip()
#内容
raw_content=soup.select('#artibodyp')[2:19]
content=[]
forparagraphinraw_content:
content.append(paragraph.text.strip())
'@'.join(content)
#责任编辑
ae=soup.select('.article-editor')[0].text
这样就可以了
‘陆’ 我打算用python去处理html的form表单,该怎么实现
运用 web.py 框架
例如 index页面有两个输入框
<form action='/index',method='post'>
<input type="text" name="name" id="name" />
<input type="text" name="pwd" id="pwd" />
</form>
那么 在python 中
class index:
def GET(self, name):
inputall =web.input(name=None,pwd=None)
name= inputall.name
pwd= inputall.pwd
print print name ,pwd
def POST(self, name):
inputall =web.input(name=None,pwd=None)
name= inputall.name
pwd= inputall.pwd
print print name ,pwd
就得到了页面提交的 name 和pwd
‘柒’ 用python flask制作的网页上传到服务器后python如何获取网上用户提交的form表单信息
from flask import request
request.args 是get方法的form内容
request.form 是post方法的form内容
‘捌’ 不用web框架,怎么通过python获取网页表单提交的数据,并传入数据库啊,求大佬们帮帮忙
你想自己实现 wsgi 还是使用 wigiref 模块?你需要了解wsgi 基础,所有表单数据 可以通过 wsgi 的入口函数中的参数 envrion['wsgi.input'] 获取到
wsgi参考资料:
https://www.python.org/dev/peps/pep-3333/
https://pep-3333-wsgi.readthedocs.io/en/latest/
‘玖’ python 处理HTML 提交form 表单问题
form表单数据,那肯定是post提交的,
你用request对象去获取里面post参数,参数的名字就是表单输入框的name的值,两者对应起来你就能获取了,后面的处理就按自己的业务逻辑来
‘拾’ 如何用python获取最简单的一个html表单
如果你指的是,处理静态(或动态)网页,那么可以参考下面这个代码:
form = cgi.FieldStorage()
text = form.getvalue('name', 'default')