Код Python иногда выполняется, а иногда нет - PullRequest
0 голосов
/ 25 мая 2019

Я настраиваю базу данных (Pandas Dataframe) для хранения новостных ссылок на новостные статьи (статьи прошлой недели) для списка компаний.Я написал код на Python, но код исполняется некоторое время, а иногда нет, и он не выдает никакой ошибки.Так как это не производит никакого журнала или ошибки, я нахожу трудным понять фон по этой проблеме.

Я попытался удалить кеш из браузера, так как я использую ноутбук Jupyter, и я попытался с другим приложением, таким как Sypder.У меня та же проблема с ноутбуком Jupyter и другим приложением


links_output=[]

class Newspapr:
    def __init__(self,term):
        self.term=term
        self.url='https://www.google.com/search?q={0}&safe=active&tbs=qdr:w,sdb:1&tbm=nws&source=lnt&dpr=1'.format(self.term)

    def NewsArticlerun(self):
        response=requests.get(self.url)
        soup=BeautifulSoup(response.text,'html.parser')
        links=soup.select(".r a")

        numOpen = min(5, len(links))
        for i in range(numOpen):
            response_links = "https://www.google.com" + links[i].get("href")
            print(response_links)
            links_output.append({"Weblink":response_links})
        pd.DataFrame.from_dict(links_output)



list_of_companies=["Wipro","Reliance","icici bank","vedanta", "DHFL","yesbank","tata motors","tata steel","IL&FS","Jet airways","apollo tyres","ashok leyland","Larson & Turbo","Mindtree","Infosys","TCS","AxisBank","Mahindra & Mahindra"]

for i in list_of_companies:
    comp_list = str('"'+ i + '"')
    call_code=Newspapr(comp_list)
    call_code.NewsArticlerun()

Я ожидаю напечатать веб-ссылку и в виде pandas dataframe

Ответы [ 2 ]

0 голосов
/ 25 мая 2019

Полагаю, вы запускаете контрмеры Google для борьбы со спамом. Добавление задержки к вашим запросам может помочь.

Редактировать: Как Ю Чен сказал здесь , используйте официальный Google API https://developers.google.com/custom-search/docs/tutorial/creatingcse

Edit2: Посмотрите на этот пост для подробного ответа: Программный поиск Google в Python с помощью пользовательского поиска

Редактировать3: Чтобы сделать его более полезным, вы должны уточнить характер вашего вопроса, добавив к его названию термин "Поиск Google"

0 голосов
/ 25 мая 2019

Во-первых, соглашение об именах функций неверно, я изменил его.

Вы ничего не возвращаете в своей функции.return it.

def newsArticlerun(self):
    response=requests.get(self.url)
    soup=BeautifulSoup(response.text,'html.parser')
    links=soup.select(".r a")

    numOpen = min(5, len(links))
    for i in range(numOpen):
        response_links = "https://www.google.com" + links[i].get("href")
        print(response_links)
        links_output.append({"Weblink":response_links})
    return pd.DataFrame.from_dict(links_output) # this will return your df

Чтобы напечатать результат, добавьте print

for i in list_of_companies:
    comp_list = str('"'+ i + '"')
    call_code=Newspapr(comp_list)
    print(call_code.NewsArticlerun()) # here

Примечание: Из-за этого вы не получаетерезультаты.

<div style="font-size:13px;">
<b>About this page</b><br/><br/>Our systems have detected unusual traffic from your computer network.  This page checks to see if it's really you sending the requests, and not a robot.  <a href="#" onclick="document.getElementById('infoDiv').style.display='block';">Why did this happen?</a><br/><br/>
<div id="infoDiv" style="display:none; background-color:#eee; padding:10px; margin:0 0 15px 0; line-height:1.4em;">
This page appears when Google automatically detects requests coming from your computer network which appear to be in violation of the <a href="//www.google.com/policies/terms/">Terms of Service</a>. The block will expire shortly after those requests stop.  In the meantime, solving the above CAPTCHA will let you continue to use our services.<br/><br/>This traffic may have been sent by malicious software, a browser plug-in, or a script that sends automated requests.  If you share your network connection, ask your administrator for help — a different computer using the same IP address may be responsible.  <a href="//support.google.com/websearch/answer/86640">Learn more</a><br/><br/>Sometimes you may be asked to solve the CAPTCHA if you are using advanced terms that robots are known to use, or sending requests very quickly.
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...