wcsdn_123 2020-04-15 09:10 采纳率: 66.7%
浏览 312
已采纳

请各位大神给修改一下代码问题,存在以下4个小问题,代码如下

1、第一个是最后一行代码提示错误,请问下如何修改?

Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\5.10.py", line 34, in
fp.write('\r\n')
TypeError: a bytes-like object is required, not 'str'

2、第二个问题是写入后只有最后一个文件内容,是不是写入的时候直接把前面写入的文件覆盖了,我把with open(fname, 'wb') as fp: 改成
with open(fname, 'a') as fp,提示如下:
TypeError: write() argument must be str, not bytes
请问如何不把前面的内容覆盖?

3、写入的文件内容,没有换行,是不是第一段代码就是换行的?
4、获取到的只有内容,所有的标题都没有,请问下怎么把标题也获取到?

#coding: utf-8
import requests
from lxml import etree

url = 'http://www.moe.gov.cn/jyb_xxgk/moe_1777/moe_1778/'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64)\
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0\
.2743.116 Safari/537.36',
'Accept-Language': 'zh-CN,zh;q=0.8'
}

response = requests.get(url, headers=headers).text
html = etree.HTML(response)
result1 = html.xpath('//ul[@id="list"]//li//a/@href')

for site in result1:
xurl = "http://www.moe.gov.cn/jyb_xxgk/moe_1777/moe_1778/" + site
req = requests.get(xurl, headers=headers)

html2 = etree.HTML(req.content)
result2 = html2.xpath('//p/text()')
fname = r"C:\Users\Administrator\Desktop\1234.docx"
with open(fname, 'wb') as fp:
for i in result2:
fp.write(i.encode('utf-8'))
fp.write('\r\n')

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-04-15 09:48
    关注
    fp.write('\r\n')
    ->
    fp.write(b'\r\n')
    
    标题在html里面的 <title>xxx</title> 中,可以用正则表达式提取
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘