爬虫为什么爬一点就中断了呢
本帖最后由 L嘉 于 2020-8-5 20:26 编辑@Twilight6 # -*- coding: utf-8 -*-
from lxml import etree
import requests
import csv
import time
def writecsv(item):
with open('ershou.csv','a',encoding = 'utf-8') as f:
writer = csv.writer(f)
try:
writer.writerow(item)
except:
print('write error!')
if __name__ == '__main__':
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.3'}
start_url = 'https://cd.ke.com/ershoufang/damian/pg'
for x in range(1,76):
url = start_url + str(x)
html = requests.get(url,headers = headers)
time.sleep(3)
selector = etree.HTML(html.text)
#小区列表
xiaoqulist = selector.xpath('//*[@id="beike"]/div/div/div/div/ul/li')
for xiaoqu in xiaoqulist:
#楼盘名
mingcheng = xiaoqu.xpath('div/div/div/div/a/text()')
#楼盘信息
xinxi = xiaoqu.xpath('div/div/div/text()')
#均价
junjia = xiaoqu.xpath('div/div/div/div/span/text()')
#总价
zongjia = xiaoqu.xpath('//div/div/div[@class="totalPrice"]/span/text()')
item =
writecsv(item)
print('londing:',mingcheng)
本帖最后由 xiaosi4081 于 2020-8-5 15:35 编辑
可能缩进乱了
from lxml import etree
import requests
import csv
import time
def writecsv(item):
with open('ershou.csv','a',encoding = 'utf-8') as f:
writer = csv.writer(f)
try:
writer.writerow(item)
except:
print('write error!')
if __name__ == '__main__':
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.3'}
start_url = 'https://cd.ke.com/ershoufang/damian/pg'
for x in range(1,76):
url = start_url + str(x)
html = requests.get(url,headers = headers)
time.sleep(3)
selector = etree.HTML(html.text)
#小区列表
xiaoqulist = selector.xpath('//*[@id="beike"]/div/div/div/div/ul/li')
for xiaoqu in xiaoqulist:
#楼盘名
mingcheng = xiaoqu.xpath('div/div/div/div/a/text()')
#楼盘信息
xinxi = xiaoqu.xpath('div/div/div/text()')
#均价
junjia = xiaoqu.xpath('div/div/div/div/span/text()')
#总价
zongjia = xiaoqu.xpath('//div/div/div[@class="totalPrice"]/span/text()')
item =
writecsv(item)
print('londing:',mingcheng) 我这里没有问题? qiuyouzhi 发表于 2020-8-5 15:31
我这里没有问题?
我要爬取75页一共2000多条数据,结果就出来90多条 xiaosi4081 发表于 2020-8-5 15:30
可能缩进乱了
2000多条信息就爬出来90多条 L嘉 发表于 2020-8-5 15:35
我要爬取75页一共2000多条数据,结果就出来90多条
妈耶,这么多的吗
我建议你每次sleep几秒,不然不被反爬是不可能的 qiuyouzhi 发表于 2020-8-5 15:38
妈耶,这么多的吗
我建议你每次sleep几秒,不然不被反爬是不可能的
我设置的5秒啊 L嘉 发表于 2020-8-5 15:39
我设置的5秒啊
噢,抱歉,没看见
那我建议你爬完一页休息个几分钟,几秒钟或许不够? qiuyouzhi 发表于 2020-8-5 15:49
噢,抱歉,没看见
那我建议你爬完一页休息个几分钟,几秒钟或许不够?
{:10_277:}那不得加班了哦
L嘉 发表于 2020-8-5 15:54
那不得加班了哦
你要爬取的主要是什么?
是不是每个内容的标题,还是里面的内容也需要?
2002 条不是个小数目,建议每次爬取 100 多条,下一次从上次结束的地方断点续传 L嘉 发表于 2020-8-5 15:54
那不得加班了哦
{:10_250:}谁叫那个网站反爬厉害呢 L嘉 发表于 2020-8-5 15:54
那不得加班了哦
我可以帮你改一下代码{:9_219:} _2_ 发表于 2020-8-5 16:01
你要爬取的主要是什么?
是不是每个内容的标题,还是里面的内容也需要?
2002 条不是个小数目,建议每 ...
就表面的一些内容,子页面的没有爬取 1q23w31 发表于 2020-8-5 16:04
我可以帮你改一下代码
你是说加多线程吗? L嘉 发表于 2020-8-5 16:06
你是说加多线程吗?
可以考虑,不过要为每个线程单独设置
(就是第一个线程爬0-99,第二个线程爬100-200,以此类推)
比较麻烦就不搞了 _2_ 发表于 2020-8-5 18:01
可以考虑,不过要为每个线程单独设置
(就是第一个线程爬0-99,第二个线程爬100-200,以此类推)
比较 ...
好的谢谢
试试看?
# -*- coding: utf-8 -*-
from lxml import etree
import requests
import csv
import time
def writecsv(item):
with open('ershou.csv', 'a', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(item)
if __name__ == '__main__':
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.3',
'referer':'https://cd.ke.com/ershoufang/damian/pg/'}
start_url = 'https://cd.ke.com/ershoufang/damian/pg'
for x in range(1, 76):
url = start_url + str(x)
html = requests.get(url, headers=headers)
time.sleep(3)
selector = etree.HTML(html.text)
headers['referer'] = f'https://cd.ke.com/ershoufang/damian/pg{x-1}/'
# 小区列表
xiaoqulist = selector.xpath('//*[@id="beike"]/div/div/div/div/ul/li')
for xiaoqu in xiaoqulist:
# 楼盘名
mingcheng = xiaoqu.xpath('div/div/div/div/a/text()')
# 楼盘信息
xinxi = xiaoqu.xpath('div/div/div/text()')
# 均价
junjia = xiaoqu.xpath('div/div/div/div/span/text()')
# 总价
zongjia = xiaoqu.xpath('//div/div/div[@class="totalPrice"]/span/text()')
item =
writecsv(item)
print('londing:', mingcheng)
试试用多进程{:10_312:}
页:
[1]