python爬虫学习(第二爬)

爬取吉林大学官网新闻信息

日常获取页面源代码

url = "https://news.jlu.edu.cn/jdxw/xykx.htm"
headers = {
    "user-agent":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:90.0) Gecko/20100101 Firefox/90.0"
}
resp = requests.get(url,headers=headers)
print(resp.text)

会出现报错

requests.exceptions.SSLError: HTTPSConnectionPool

出现这个问题原因是:ssl验证失败

                  解决方法是:关闭证书验证(verify=False)

resp = requests.get(url,headers=headers,verify=False)

获取源代码后发现有部分乱码    寻找charset值即可

resp.encoding = "UTF-8"

之后得到要爬取的xpath即可

title = li.xpath("./a/text()")[0]
data = li.xpath("./span/text()")[0]
src = li.xpath("./a/@href")[0].replace('..','https://news.jlu.edu.cn')
src1 ="https://news.jlu.edu.cn"+ li.xpath("./a/@href")[0].split("..")[-1]

这里由于对应的网址是相对路径   因此要做字符串拼接处理

写了两种处理方法:替换和分割拼接

之后还需要:1、把网址变为多个,获取多页的新闻

                           2、做文件的a操作

                           3、time设置延时,防止对网页造成影响

 要实现python代码的整体缩进与退格,只需要选中代码,然后按相应的快捷键即可。其中:

  • 缩进 :Tab键

  • 退格 :Shift + Tab键

最终源码为

import requests
import time
from requests.api import head
from lxml import etree
for a in range(10):
    if(a == 0):
        url = "https://news.jlu.edu.cn/jdxw/xykx.htm"
    else:
        url = "https://news.jlu.edu.cn/jdxw/xykx/{}.htm".format(101-a)
    headers = {
        "user-agent":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:90.0) Gecko/20100101 Firefox/90.0"
    }
    resp = requests.get(url,headers=headers,verify=False)
    resp.encoding = "UTF-8"

    html = etree.HTML(resp.text)
    lis = html.xpath("/html/body/div[4]/div[2]/div[2]/div[1]/ul/li")
    for li in lis:
        title = li.xpath("./a/text()")[0]
        data = li.xpath("./span/text()")[0]
        src = li.xpath("./a/@href")[0].replace('..','https://news.jlu.edu.cn')
        src1 ="https://news.jlu.edu.cn"+ li.xpath("./a/@href")[0].split("..")[-1]
        print(title,data,src,src1)

        with  open('sample/JLU.txt','a') as f:#写入文件中,文件默认和python文件同一级目录
            f.write("{}         {}          {}".format(title,data,src))
            f.write("\n\n")
        time.sleep(0.2)
f.close()
print("下载成功")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值