Цикл сценария PYTHON - PullRequest
       2

Цикл сценария PYTHON

0 голосов
/ 30 ноября 2018

Мне нужна помощь с техникой петли Python.После нескольких дней поиска я сдаюсь ...

Система: Windows (Anaconda)

Идея: "Я создал скрипт парсера HTML, но из-за отсутствия знаний и опыта работы с PythonПохоже, мне нужно запустить его на каждой странице. Я не могу это исправить, поэтому я решил зациклить этот скрипт и заставить его запускаться 100 раз для 100 страниц ".... но в результате я могуНе могу найти правильный способ сделать это ...

Мой скрипт

import requests
import pandas as pd
import urllib.parse
import urllib.request
import re
import os
import sys



 url = "*******************/store/index.php"

 querystring ={"id":"***","act":"search","***":"***","country":"",
 "state":"*","city":"","zip":"","type":"","base":"","PAGENUM":"2"}

 headers = {
 'Host': "www.*****",
 'Connection': "keep-alive",
 'Upgrade-Insecure-Requests': "1",
 'User-Agent': "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 
 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36",'Accept':"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
'Referer': "h************/store/index.php?id=********************&pagenum=2",
'Accept-Encoding': "gzip, deflate",
'Accept-Language': "en-US,en;q=0.9",
'Cookie': "php_session_id_real=**********; cookname=**********; cook******",
'cache-control': "no-cache",
'Postman-Token': "**************************"
}

 response = requests.request("GET", url, headers=headers,params=querystring)
 df_list = pd.read_html(response.text)
 df = df_list[-1]

 print(df)

Все, что мне нужно изменить, это строка запроса PAGENUM (например: & pagenum = 2,3,10, 50 и т. Д.)

Можно ли запустить этот скрипт на Python X раз и каждый раз изменять значение pagenum = pagenum + 1 ??

Надеюсь на ваш совет!

Ура

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Вам нужно подать заявку на цикл, который запускается 100 раз и занимает все ваши страницы.Я надеюсь, что ниже код работает нормально.

import requests
import pandas as pd
import urllib.parse
import urllib.request
import re
import os
import sys
import numpy as np


 url = "*******************/store/index.php"
 pagenums = np.arange(0,100)
 for i in pagenums:
     querystring ={"id":"***","act":"search","***":"***","country":"",
     "state":"*","city":"","zip":"","type":"","base":"","PAGENUM":str(i)}

     headers = {
     'Host': "www.*****",
     'Connection': "keep-alive",
     'Upgrade-Insecure-Requests': "1",
     'User-Agent': "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 
     (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36",'Accept':"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
    'Referer': "h************/store/index.php?id=********************&pagenum=2",
    'Accept-Encoding': "gzip, deflate",
    'Accept-Language': "en-US,en;q=0.9",
    'Cookie': "php_session_id_real=**********; cookname=**********; cook******",
    'cache-control': "no-cache",
    'Postman-Token': "**************************"
    }

     response = requests.request("GET", url, headers=headers,params=querystring)
     df_list = pd.read_html(response.text)
     df = df_list[-1]

        enter code here

     print(df)
0 голосов
/ 30 ноября 2018

Используйте for и перейдите к списку, содержащему все нужные значения.Затем используйте str для сохранения значения в словаре.

Сделайте это:

import requests
import pandas as pd
import urllib.parse
import urllib.request
import re
import os
import sys

pagenums=[2,3,10,50]
#or pagenums = np.range(1,101)

for page in pagenums:
    querystring ={"id":"***","act":"search","***":"***","country":"",
                  "state":"*","city":"","zip":"","type":"","base":"","PAGENUM":str(page)}
    #......
    #..... # more code here

    #headers = {....}

Для каждой итерации значение ключа PAGENUM,будет обновлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...