standyy 发表于 2019-10-27 16:35

python ,爬虫问题。

import requests
from lxml import etree
import time
import re
import random
from fake_useragent import UserAgent
BASET = 'https://www.ygdy8.net'
pro = ['67.205.136.66:8080', '89.187.181.123:3128', '167.99.232.31:8080','89.187.181.123:3128']
#proxy=random.choice(proxy_list)
ua = UserAgent()
headers = {'User-Agent':ua.random}
#headers = random.choice(headerss)
def get_one_url(url):
    response = requests.get(url, headers=headers,proxies={'http': random.choice(pro)})
    #response.encoding = 'GBK'
    text = response.content.decode('GB18030', 'ignore')
    #text = response.text
    html = etree.HTML(text)
    detail_urls = html.xpath("//table[@class='tbspan']//a/@href")
    detail_urls = map(lambda url:BASET+url,detail_urls)
    return detail_urls

def parse_detail_page(url):
    #movis =[]
    response = requests.get(url,headers=headers,proxies={'http': random.choice(pro)})
    text = response.content.decode('GB18030','ignore')
    #html = etree.HTML(text)
    with open('movis.txt', 'a', encoding='utf-8') as file:
      #titles = html.xpath("//div[@class='title_all']//font[@color='#07519a']/text()")
      titles = re.findall(r'<div class="title_all"><h1><font color=#07519a>(.*?)</font></h1></div>',text,re.S)
      #获取标题
      for title in titles:
            #打印标题和存储标题
            print(title)
            file.write(title)
            file.write('\n' * 1)
      links = re.findall('<td.*?<a href="(.*?)">.*?</a></td>',text,re.S)
      #links = html.xpath('//div[@id="Zoom"]/span/table/tbody/tr/td/a//@href')
      for link in links:
            #获取此链接
      #print(link)
            print(link)
            file.write(link)
            file.write('=' * 100 + '\n')
      time.sleep(6)

def mrin():
    na_url = 'https://www.ygdy8.net/html/gndy/dyzz/list_23_{}.html'
    for x in range(1,101):
      #来获取页面上
      url = na_url.format(x)
      detail_urls = get_one_url(url)
      for detail_url in detail_urls:
            #用来获取页中所有的详情页请求链接。
            movie = parse_detail_page(detail_url)
mrin()

先贴出代码,我设置了随机UA ,和随机IP。但是还是报错连接被中断。试了很多次就没有完整的爬完的,头很大现在,求大佬帮我看下是啥问题。

zqc8 发表于 2019-10-27 17:07

这种忙一般少有人帮,帮的话不亚于自己爬一遍,所以有时候还真得靠自己。
说下你想爬什么,想得到什么样的结果,有空我可以帮你去看看,

standyy 发表于 2019-10-27 17:11

zqc8 发表于 2019-10-27 17:07
这种忙一般少有人帮,帮的话不亚于自己爬一遍,所以有时候还真得靠自己。
说下你想爬什么,想得到什么样的 ...

其实疑惑的是为啥就是都已经设置了随机UA,和随机IP,包括请求时间也不是很长,但是还报错
也不是想要那些数据,只是在练手过程中碰到这个问题被困扰了好几天。

rexyan 发表于 2019-10-27 17:30

别自己手写了,用 scrapy 吧。也别用正则了,再差也用过 bs4 啊,或者 XPATH。连接被中断的问题,建议维护自己的代{过}{滤}理池,控制爬取速度,伪装浏览器等。另外提醒一下现在网络爬虫国家开始重视了,前不久抓了好多人!

zyu 发表于 2019-10-27 17:43

可能是有的IP不能用,加一个异常处理 try: except : 试试?   

时空之外 发表于 2019-10-27 17:52

感觉你的ip可能无效,再有就是这种问题不是应该发悬赏嘛

wdz2018 发表于 2019-10-27 18:39

这些天玩一mud手游,有个门派拜师的前置技能有个捡钥匙的需求好折磨人,好些人在抢,就在想能不能通过爬虫抓取关键词执行对应操作,可是又不懂这个不晓得怎么搞,现学估计是来不及了

M-Riley 发表于 2019-10-27 19:28

建议看下请求头,你虽然设置了随机ua和ip,但是一些网站对headers这块也进行了参数检测,不是光有ua和ip就行的,另外还有cookie检测,也是同样的道理,爬的时候要尽量模拟真实的浏览器发送请求,你需要抓包看看浏览器发送了那些参数和内容

standyy 发表于 2019-10-27 20:39

时空之外 发表于 2019-10-27 17:52
感觉你的ip可能无效,再有就是这种问题不是应该发悬赏嘛

IP我单独测过了,有效才放上去的。
很少发帖,不太清楚这个,受教了{:1_918:}

子子木木木子子 发表于 2019-10-29 10:39

运行了你的程序,无报错。(我把你UA随机给删了,用的固定的该请求头上的chrome-UA)
页: [1]
查看完整版本: python ,爬虫问题。