php爬虫如何进行翻页,网页爬取文本内容实现翻页等代码的优化

话不多说,先上代码,接下来再一句一句解释:

import requests

import time

from lxml import etree

def getpage(url):

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

html=etree.HTML(r.text)

name=html.xpath('//div[@class="title"]//a/text()')

zhuyan=html.xpath('//div[@class="subtitle text-muted text-overflow hidden-xs"]/a[1]/text()')

for name1,zhuyan1 in zip(name,zhuyan):#这是我刚掌握的zip函数的作用,就是把两个序列一一对应,如下面print

with open('C:/Users/Administrator/Desktop/新建文本文档.txt', 'a', encoding="utf-8") as f:

print(name1+" 主演是 "+zhuyan1)#a是插入,w是读取

f.write(name1+"\n")

if __name__=="__main__":

urls=["http://www.bdtvs.com/search.php?page={}&searchtype=5&tid=2&area=%E5%A4%A7%E9%99%86".format(str(i)) for i in range(1,282)]#这一句语言很简介的实现翻页,解决的很麻烦的事情,对其中更改的野马进行遍历

headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36'}#大家一定要注意的是headers后面的UA的冒号和减去一个空格,否则会报错

for url in urls:

getpage(url)

time.sleep(0.5)

今天这个代码让我在对爬虫代码有了较为清晰的理解,作为一名自学者,每一步很是艰辛,能对着屏幕想半天,这个优化主要有两点,1、zip函数进行一一对应,更方便输出2、对网址进行格式化{},format(),用for进行遍历,使用range。

其他代码都很简单,希望能共同学习。

下面贴几个,我学习初期的一些代码,应该是思路不一样。

import requests

from lxml import html

import sys

for pageNum in range(327):

url = 'https://movie.douban.com/review/9936402/?start={}'.format(pageNum*327)

page=requests.Session().get(url)

tree=html.fromstring(page.content)#不是utf-8,如何转码,把(page.text)改为(page.content.decode('gbk'))

result=tree.xpath('//div[@class="content report-comment"]//div[@class="header"]/a/text()') #需要获取的数据

result2=tree.xpath('//div[@class="content report-comment"]//p[@class="comment-text"]/text()')

n = 0

for n in range(len(result)):**#这个思路我挺佩服自己的,能想到使用切片,做到同一,而且当时不太会函数**

jieguo = "用户@" + result[n] + "@发表:" + result2[n]

print(jieguo)

再之前的一个语句,没有学会翻页的时候:

import requests

from lxml import html #当时学的是tree,后来还是etree更好

url='https://movie.douban.com/review/9936402/?start=0' #需要爬的网址

page=requests.Session().get(url)

tree=html.fromstring(page.content)#不是utf-8,如何转码,把(page.text)改为(page.content.decode('gbk'))

result=tree.xpath('//div[@class="content report-comment"]//div[@class="header"]/a/text()') #需要获取的数据

result2=tree.xpath('//div[@class="content report-comment"]//p[@class="comment-text"]/text()')

n = 0

i=result[n]

h=result2[n]#这两个变量,设置了但没有用,当时也是蠢得可以

for n in range(len(result)):

print("用户@"+result[n]+"@发表:"+result2[n])

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值