精华内容
下载资源
问答
  • 2021-06-29 05:14:48

    我在python中使用本地html文件,我正在尝试使用lxml来解析文件.由于某种原因,我无法正确加载文件,我不确定这是否与我的本地计算机上没有设置http服务器,etree用法或其他内容有关.

    这是我的代码:

    from lxml import html

    import requests

    page = requests.get('C:\Users\...\sites\site_1.html')

    tree = html.fromstring(page.text)

    test = tree.xpath('//html/body/form/div[3]/div[3]/div[2]/div[2]/div/div[2]/div[2]/p[1]/strong/text()')

    print test

    我得到的回溯读取:

    C:\Python27\python.exe "C:/Users/.../extract_html/extract.py"

    Traceback (most recent call last):

    File "C:/Users/.../extract_html/extract.py", line 4, in

    page = requests.get('C:\Users\...\sites\site_1.html')

    File "C:\Python27\lib\site-packages\requests\api.py", line 69, in get

    return request('get', url, params=params, **kwargs)

    File "C:\Python27\lib\site-packages\requests\api.py", line 50, in request

    response = session.request(method=method, url=url, **kwargs)

    File "C:\Python27\lib\site-packages\requests\sessions.py", line 465, in request

    resp = self.send(prep, **send_kwargs)

    File "C:\Python27\lib\site-packages\requests\sessions.py", line 567, in send

    adapter = self.get_adapter(url=request.url)

    File "C:\Python27\lib\site-packages\requests\sessions.py", line 641, in get_adapter

    raise InvalidSchema("No connection adapters were found for '%s'" % url)

    requests.exceptions.InvalidSchema: No connection adapters were found for 'C:\Users\...\sites\site_1.html'

    Process finished with exit code 1

    您可以看到它与"连接适配器"有关,但我不确定这意味着什么.

    更多相关内容
  • 今天小编就为大家分享一篇Python读取本地文件并解析网页元素的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 我们可以用Python来将一个网页保存为本地HTML文件,这需要用到urllib库。 比如我们要下载山东大学新闻网的一个页面,该网页如下: 实现代码如下: import urllib.request def getHtml(url): html = urllib....
  • Python使用爬虫技术时,每...一、将网页源代码存在本地1、打开需要爬取的网页,鼠标右键查看源代码2、复制源代码,将代码保存至本地项目文件目录下,文件后缀改为.html二、在Python中打开本地html文件打开并读取本...

    Python使用爬虫技术时,每运行一次,本地都会访问一次主机。为避免完成程序前调试时多次访问主机增加主机负荷,我们可以在编写程序前将网页源代码存在本地,调试时访问本地文件即可。现在我来分享一下爬取资料的调试过程。

    一、将网页源代码存在本地

    1、打开需要爬取的网页,鼠标右键查看源代码

    1782691-20191208021258262-27644528.png

    2、复制源代码,将代码保存至本地项目文件目录下,文件后缀改为.html

    1782691-20191208021411135-1486730418.png

    1782691-20191208021652725-588072560.png

    二、在Python中打开本地html文件

    打开并读取本地文件可使用BeautifulSoup方法直接打开

    soup=BeautifulSoup(open('ss.html',encoding='utf-8'),features='html.parser') #features值可为lxml

    解析后可以直接使用soup,与请求网页解析后的使用方法一致

    三、使用本地文件爬取资料

    1、先爬取主页的列表资料,其中同义内容使用“@”符号连接

    defdraw_base_list(doc):

    lilist=soup.find('div',{'class':'babynames-term-articles'}).findAll('article');#爬取一级参数

    for x inlilist:

    str1=''count=0

    a='@'EnName=x.find('a').text;

    Mean=x.find('div',{'class':'meaning'}).text;

    Sou=x.find('div',{'class','related'}).findAll('a')

    Link=x.find('a').get('href');for x inSou:if count!=0:#添加计数器判断是否为第一个,不是则添加@

    str1=str1+as=str(x) #将x转换为str类型来添加内容

    str1=str1+s

    count+=1Source=str1print(Source);

    print(Meaning);

    运行后发现Source和Meaning中包含了标签中的内容,我们使用正则表达式re.sub()方法删除str中指定内容。查看源代码可以发现标签内容只有一个链接,可以获取标签内的链接后再指定删除。

    首先在for循环内给定一个值获取标签内的链接link=x.get('href'),接着使用sub方法指定删除link。代码如下:

    link=x.get('href')

    change2=re.sub(link,'',s)

    运行后我们发现str中还存在标签名,在for循环中指定多余内容删除:

    link=x.get('href')

    s=str(x)

    change1=re.sub('

    change2=re.sub(link,'',change1)

    change3=re.sub('">','',change2)

    change4=re.sub('Baby Names','',change3)

    change5=re.sub('

    ','',change4)

    change=re.sub(' ','',change5)

    最后就能得到想要的信息。

    2、再爬取详细信息

    通过def draw_base_list(doc)函数向二级详情函数传递Link参数爬取详细信息,为避免频繁访问主机,我们同样将详情页的源代码保存至本地并解析。

    defdraw_detail_list():

    str1="’

    meta="boy"doc=BeautifulSoup(open('nn.html',encoding='utf-8'),features='html.parser')

    Des=doc.find('div',{'class':'single-babyname-wrapper'}).findAll('p')

    Gen=doc.find('div',{'class':'entry-meta'}).find('a')#print(Gen)

    g=str(Gen)for i inGen:if meta ing:

    Gender="boy"

    else:

    Gender="girl"

    #print(Gender)

    for x inDes:#print(x)

    if x.find('a')==None: #该标签下有我们不需要的信息,查看源代码找到信息之间的联系,发现不需要的信息中都有链接

    c=str(x)

    change1=re.sub('

    ','',c) #与一级信息函数一样删除指定内容

    change2=re.sub('

    ','',change1)

    change3=re.sub(' ','',change2)

    change=re.sub(' ','@',change3)

    str1=str1+change#Description=x.text

    #print(Description)

    Description=str1#print(Description)

    data={ #将数据存进字典中方便将数据保存至csv文件或数据库中

    'EnName':EnName,'CnName':'','Gender':Gender,'Meaning':Meaning,'Description':Description,'Source':Source,'Character':'', #网页中没有的信息数据列为空

    'Celebrity':'','WishTag':''}#print(data)

    3、将爬取下来的数据存入csv文件中

    defdraw_base_list(doc):

    ......#爬取一级参数

    for x inlilist:

    ......for x inSou:

    ......

    ......

    draw_detail_list(Link,EnName,Meaning,Source)#将数据传给二级信息函数

    defdraw_detail_list(url,EnName,Meaning,Source):

    ......for i inGen:

    ......for x inDes:

    ......

    data={

    ......

    }

    write_dictionary_to_csv(data,'Names') #将字典传给存放数据函数,并给定csv文件名

    defwrite_dictionary_to_csv(dict,filename):

    file_name='{}.csv'.format(filename)

    with open(file_name,'a',encoding='utf-8') as f:

    file_exists=os.path.isfile(filename)

    w=csv.DictWriter(f, dict.keys(),delimiter=',', quotechar='"', lineterminator=' ',quoting=csv.QUOTE_ALL, skipinitialspace=True)

    w.writerow(dict)

    打开文件后发现没有文件头,为避免重复写入文件头,判断文件是否为空,若为空则写入文件头:

    #防止每次循环重复写入列头

    if os.path.getsize(file_name)==0 : #通过文件大小判断文件是否为空,为0说明是空文件

    w.writeheader()

    再次运行后文件头正常写入文件中。

    4、访问主机,完成信息爬取

    确定代码正确没有错误后就可以将打开本地文件的代码改成访问网页,最后完成数据的爬取。

    展开全文
  • 一、说明 解析html文件我喜欢用xpath不喜欢... 但是Requests-HTML一开始就是针对Requests从网络请求页面计的,并不能解析本地html文件。 想用Requests-HTML解析本地html文件,我们可借助Requests-File库实现。 ...

    一、说明

    解析html文件我喜欢用xpath不喜欢用BeautifulSoup,Requests的作者出了Requests-HTML后一般都用Requests-HTML。

    但是Requests-HTML一开始就是针对Requests从网络请求页面计的,并不能解析本地html文件。

    想用Requests-HTML解析本地html文件,我们可借助Requests-File库实现。

     

    二、实现解析本地html文件

    2.1 安装Requests-File

    pip install requests-file

     

    2.2 实现代码

    mount方法类似挂载文件系统,但我不清楚其本质是将哪里挂到哪里,测试时使用相对(当前工作目录)路径找不到文件使用绝对路径可以,所以就使用了绝对路径并未深究。

    import os
    from requests_html import HTMLSession
    from requests_file import FileAdapter
    
    session = HTMLSession()
    
    # 如果是网络文件此时即可直接请求
    # session.get("https://www.baidu.com")
    
    # 如果是本地文件,需要以下代码
    # 挂载文件
    session.mount('file://', FileAdapter())
    # Windows系统路径目录分隔符为反斜杠,但get需要正斜杠所以先进行一下替换
    pwd = os.getcwd().replace("\\","/")
    # 测试发现使用相对路径读不到文件,需要使用绝对路径
    html_obj = session.get(f'file:///{pwd}/want_to_parse.html')

     

    参考:

    https://github.com/dashea/requests-file#requests-file

    转载于:https://www.cnblogs.com/lsdb/p/10233609.html

    展开全文
  • 我正在使用python中的本地html文件,并尝试使用lxml解析该文件。由于某些原因,我无法正确加载该文件,而且我不确定这是否与本地计算机上未设置http服务器、etree用法或其他原因有关。这是我的代码:from lxml ...

    我正在使用python中的本地html文件,并尝试使用lxml解析该文件。由于某些原因,我无法正确加载该文件,而且我不确定这是否与本地计算机上未设置http服务器、etree用法或其他原因有关。

    这是我的代码:from lxml import html

    import requests

    page = requests.get('C:\Users\...\sites\site_1.html')

    tree = html.fromstring(page.text)

    test = tree.xpath('//html/body/form/div[3]/div[3]/div[2]/div[2]/div/div[2]/div[2]/p[1]/strong/text()')

    print test

    我得到的回溯如下:C:\Python27\python.exe "C:/Users/.../extract_html/extract.py"

    Traceback (most recent call last):

    File "C:/Users/.../extract_html/extract.py", line 4, in

    page = requests.get('C:\Users\...\sites\site_1.html')

    File "C:\Python27\lib\site-packages\requests\api.py", line 69, in get

    return request('get', url, params=params, **kwargs)

    File "C:\Python27\lib\site-packages\requests\api.py", line 50, in request

    response = session.request(method=method, url=url, **kwargs)

    File "C:\Python27\lib\site-packages\requests\sessions.py", line 465, in request

    resp = self.send(prep, **send_kwargs)

    File "C:\Python27\lib\site-packages\requests\sessions.py", line 567, in send

    adapter = self.get_adapter(url=request.url)

    File "C:\Python27\lib\site-packages\requests\sessions.py", line 641, in get_adapter

    raise InvalidSchema("No connection adapters were found for '%s'" % url)

    requests.exceptions.InvalidSchema: No connection adapters were found for 'C:\Users\...\sites\site_1.html'

    Process finished with exit code 1

    你可以看到它与“连接适配器”有关,但我不确定这意味着什么。

    展开全文
  • 文章目录requests模块主要方法请求参数文件参数应答response示例程序getpost下载文件上传文件 requests库是基于urllib编写的,方便HTTP请求python库。 requests模块 要使用requests模块,就需要先引入import ...
  • 例如 具有如下结构的html文件感兴趣内容1感兴趣内容2……感兴趣内容n内容1内容2……内容n我们尝试获得'感兴趣内容'对于文本内容,我们保存到IDList中。可是如何标记我们遇到的文本是感兴趣的内容呢,也就是,处于这里...
  • 当你需要用到html文件中的表格数据时,你可能会想到复制粘贴,将表格数据粘贴到EXCEL表中,但如果表格太多,或者数据量很大,复制粘贴的工作量还是很大的。本文提供一种爬虫的方法,爬取hrml中的表格数据并保存为csv...
  • 由于之前对Request请求头中的host理解不充分,所以在此篇都Request头的相关只是进行补充 https://blog.csdn.net/Smart_look/article/details/105168731【Request和Response的解释在这里就不过多解释了】 一、host...
  • 此次我们用简单的爬虫来展示如何把爬到提取出的信息保存的excel文件中.(ps:首先你要安装好模块openpyxl否则就点击右上角离开,百度搜素安装.) 选前程无忧的网页作为案例是因为主编最近在看看工作的消息,想想就...
  • PythonRequest

    千次阅读 2020-12-08 14:45:39
    pip install requestsrequests.request()requests.get() #对应HTTP的GET 获取HTML网页requests.head() #对应HTTP的HEAD 获取HTML页头信息requests.post()requests.put()requests.patch() #向HTML网页提交局部修改...
  • Request库方法介绍方法说明requests.request()构造一个请求,支撑一下各方法的基础方法requests.get()获取HTML网页的主要方法,对应于HTTP的GETrequests.head()获取HTML网页头信息的方法,对应于HTTP的HEADrequests....
  • Resquest请求头【以访问知乎】为例(使用Fiddler抓的包) 请求行包含的信息: 请求的方法(POST) #其他的方法还有GET、HEAD、PUT、DELETE、OPTIONS、TRACE 请求的路径(/aoi/v3/oauth/sign_in) ...
  • 相关信息:1)第一个帖子在这里,放轻松。在2)我是个笨蛋。在3)尝试学习python/Django。在我想做的是:1)创建一个英语-gt;pig拉丁语翻译程序(用python编写...在我目前所做的:1)创建了.py文件,该文件在控制台中成功...
  • 请求网页爬取的时候,输出的text信息中会出现抱歉,无法访问等字眼,这就是禁止爬取,需要通过反爬机制去解决这个问题。headers是解决requests请求反爬的方法之一,相当于我们进去这个网页的服务器本身,假装自己...
  • python爬取百度首页源代码并存储到HTML文件
  • python爬虫请求

    千次阅读 2020-10-06 21:21:11
    请求头 网页获取: 通过urlopen来进行获取 requset.urlopen(url,data,timeout) 第一个参数url即为URL,第二个参数data是访问URL时要传送的数据,第三个timeout是设置超时时间。 第二三个参数是可以不传送的,data...
  • 2、绑定本地IP和port信息 3、使用listen改变监听状态 4、接收服务端链接,创建为客户端服务的客户端套接字 5、获取服务端发送的信息 6、使用正则表达式匹配客户端发送的信息,获得服务端需要的信息 7、根据...
  • 我们可以用Python来将一个网页保存为本地HTML文件,这需要用到urllib库。比如我们要下载山东大学新闻网的一个页面,该网页如下:实现代码如下:import urllib.requestdef getHtml(url):html = urllib.request....
  • 通过request请求保存接口的图片到本地 import json #安装两个库 import request url = "http://print.jishibaoapp.com/php/fortest.php"#图片接口地址 这时候我们需要用request请求接口索取图片返回值 send_json =...
  • Python 官网相关文档: http 模块: http — HTTP modules http.client: http.client — HTTP protocol client http.server: http.server — HTTP servers http.cookies: http.cookies — HTTP state man
  • python 爬取HTML内容并保存到txt文件

    千次阅读 2020-12-17 02:25:03
    # @UpdateTime : 2020-12-08 16:53# @Author : wz# @File : Get_WebDetails# @Software: PyCharm# @used: 爬取任意页面中任意数据import reimport urllib.requestfrom Utils.Log import LoggerLogger_message = ...
  • 我们可以用Python来将一个网页保存为本地HTML文件,这需要用到urllib库。 比如我们要下载山东大学新闻网的一个页面,该网页如下: 实现代码如下 import urllib.request def getHtml(url): html = urllib....
  • python 上传文件并保存

    2021-06-28 15:18:29
    获取前端上传文件,生成唯一ID,保存本地 引入uuid import uuid 从request对象里获取文件 f = request.FILES.get('file') 3.打开本地file目录,并写入 with open('files/' + uname + '.xls', 'wb+') as ...
  • 后端views.py文件里面读取文件内容 f = open('attack_method.txt','r',encoding = 'utf-8') attack_method = f.read() attack_method = attack_method.split('\n') ...return render(request,'visitor.html',{"attack
  • 旧版Python中urllib模块内有一个urlopen方法可打开网页,但新版python中没有了,新版的urllib模块里面只有4个子模块(error,request,response,parse),urlopen方法位于request子模块下。 urllib提供的功能就是利用...
  • Python爬虫请求与响应过程系列之二

    千次阅读 2020-12-24 13:57:42
    当我们在浏览器输入URL http://www.baidu.com 的时候,浏览器发送一个Request请求去获取 http://www.baidu.com 的html文件,服务器把Response文件对象发送回给浏览器。 2,浏览器分析Response中的 HTML,发现其中...
  • 通过前一篇博客我们可以了解,当在浏览器端输入127.0.0.1:7890时会发送request请求,格式为GET / HTTP/1.1,如果指定访问页面输入127.0.0.1:7890/index.htmlrequest请求,格式为GET /index.html HTTP/1.1。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,004
精华内容 14,801
关键字:

python request如何请求本地html文件